2013-04-03 43 views
1

我需要將啓動跟蹤標誌添加到批處理文件中的SQL服務。我一直在努力研究如何做到這一點,並最終用以下稍微笨拙的方法提出使用未記錄的TSQL過程,然後用SQLCMD調用它。問題是它引發錯誤:RegCreateKeyEx()返回錯誤5,'訪問被拒絕。'但是,同一臺服務器上的另一個腳本允許我更改其他註冊表值,例如TCP端口。任何想法我做錯了,或更優雅的方式呢?從批處理文件配置SQL Server啓動參數

DECLARE @VALUE nvarchar(200) 
DECLARE @Key nvarchar(2000) 

SET @VALUE = '-T1118 -3604 -E' 

SET @Key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.' + (select SUBSTRING(@@SERVERNAME,CHARINDEX('\',@@SERVERNAME)+1,LEN(@@SERVERNAME)-1)) + '\MSSQLServer\Parameters' 

EXECUTE master..xp_regwrite 
'HKEY_LOCAL_MACHINE', 
@Key, 
'SQLArg3', 
'REG_SZ', 
@VALUE 

表達創建@key變量elavuates到:SOFTWARE \微軟\ Microsoft SQL Server的\ MSSQL11.MYINSTANCE \的MSSQLServer \參數 這似乎是正確的我。

回答

1

爲SQL Server的默認實例的註冊表項是:

SET @Key = 'SOFTWARE\Microsoft\Microsoft SQL Server 
    \MSSQL11.MSSQLSERVER\MSSQLServer\Parameters'; 

(我包上面可讀性的關鍵 - 你需要這一切都在一行。)

除非您已經命名實例,你可以使用這個@Key而不是你的。如果您已在服務器上命名實例,則需要檢查SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstances以獲取服務器上實例的名稱。

我想有更優雅的方式使用PowerShell進行此操作。

+1

查看[閱讀]的示例(http://www.mssqltips.com/sqlservertip/2358/using-powershell-to-pull-sql-server-services-configuration-information/)。寫作可能不會太遠。 – tschmit007

相關問題