我需要将启动跟踪标志从批处理文件添加到 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 这对我来说似乎是正确的。