从批处理文件配置SQL Server启动参数

时间:2013-04-03 13:25:40

标签: sql-server batch-file

我需要从批处理文件向SQL服务添加启动跟踪标志。我一直在努力弄清楚如何做到这一点,并最终提出了以下,稍微笨拙的方法,使用未记录的TSQL程序,然后用SQLCMD调用它。问题是它抛出一个错误:RegCreateKeyEx()返回错误5,“访问被拒绝。”但是,同一服务器上的另一个脚本允许我更改其他注册表值,例如TCP端口。知道我做错了什么,或者更优雅的做法吗?

    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变量的表达式强调:SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL11.MYINSTANCE \ MSSQLServer \ Parameters 这似乎对我来说是正确的。

1 个答案:

答案 0 :(得分:1)

SQL Server默认实例的注册表项是:

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

(为了便于阅读,我将上面的密钥包裹起来 - 你需要在一行上完成这一切。)

除非您已命名实例,否则可以使用此@Key而不是您的。如果您在服务器上命名了实例,则需要检查SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstances以获取服务器上实例的名称。

我想有更优雅的方法可以使用PowerShell。