1

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

4

1 に答える 1

1

SQL Server の既定のインスタンスのレジストリ キーは次のとおりです。

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

(読みやすくするために上記のキーを折り返しました。これはすべて 1 行で行う必要があります。)

インスタンスに名前を付けていない限り、自分の代わりにこの @Key を使用できます。サーバー上のインスタンスに名前を付けている場合は、検査SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstancesしてサーバー上のインスタンスの名前を取得する必要があります。

PowerShell を使用してこれを行うよりエレガントな方法があると思います。

于 2013-04-03T13:45:10.903 に答える