0
我想知道服務器是否具有集成,報告,分析,通知服務而不考慮版本(2000或2005)。tsql知道服務器是否具有集成,報告,分析和通知服務
目前,我使用
xp_cmdshell 'net start'
但它有太多的信息。
任何幫助?
我想知道服務器是否具有集成,報告,分析,通知服務而不考慮版本(2000或2005)。tsql知道服務器是否具有集成,報告,分析和通知服務
目前,我使用
xp_cmdshell 'net start'
但它有太多的信息。
任何幫助?
這是2005/2008的代碼。對於2000年來說,你必須自己親自登錄註冊表,因爲它存儲在我認爲的其他地方。此外,您必須將其從表變量更改爲實際的臨時表。
享受。
Declare @Instances Table
(InstanceName SysName, RegKey SysName, InstanceType Character Varying(50),
Version Character Varying(4), Features National Character Varying(2000))
Insert Into @Instances(InstanceName, RegKey)
Execute Master.dbo.xp_RegEnumValues N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL'
Update @Instances Set InstanceType = 'SQL Server' Where InstanceType Is Null
Insert Into @Instances(InstanceName, RegKey)
Execute Master.dbo.xp_RegEnumValues N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\RS'
Update @Instances Set InstanceType = 'Reporting Services' Where InstanceType Is Null
Insert Into @Instances(InstanceName, RegKey)
Execute Master.dbo.xp_RegEnumValues N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\OLAP'
Update @Instances Set InstanceType = 'Analysis Services' Where InstanceType Is Null
Declare
@More Bit, @CRegKey SysName, @RegPath National Character Varying(2000),
@Features National Character Varying(2000), @VersionString National Character Varying(500)
Declare CInstance Cursor
For
Select RegKey From @Instances
Open CInstance
Set @More = 1
While (@More = 1)
Begin
Fetch Next From CInstance Into @CRegKey
If (@@Fetch_Status != 0)
Set @More = 0
Else
Begin
Set @RegPath = N'Software\Microsoft\Microsoft SQL Server\' + @CRegKey + '\Setup'
Execute Master.dbo.xp_RegRead N'HKEY_LOCAL_MACHINE', @RegPath, N'FeatureList', @Features Output, 'no_output'
Execute Master.dbo.xp_RegRead N'HKEY_LOCAL_MACHINE', @RegPath, N'PatchLevel', @VersionString Output, 'no_output'
-- \' ignore this, it's just to get the formatting right
Update @Instances
Set
Features = @Features,
Version = (Case When Left(@VersionString, 1) = '9' Then '2005'
When Left(@VersionString, 2) = '10' Then '2008'
Else '????' End)
Where Current Of CInstance
End
End
Close CInstance
Deallocate CInstance
Update @Instances Set InstanceName = '(local)' Where InstanceName = 'MSSQLServer'
Select InstanceName, InstanceType, Version, Features
From @Instances