バッチ ファイルから 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 私には正しいようです。