2

マシンのホスト名を知らなくても、Windows マシンのユーザー アカウントを参照したいと考えています。

具体的には、SQL サーバー データベースの権限を sql スクリプトで割り当てています。これにより、そのマシンのローカル ユーザー アカウントに権限が付与されます。

例: CREATE USER [UserA] FOR LOGIN [MACHINENAME\UserA] WITH DEFAULT_SCHEMA=[dbo]

このスクリプトはインストール プロセスの一部として呼び出されるため、事前に「MACHINENAME」がわかりません。

使用できる「ローカル マシン」を意味する特別なトークンはありますか? '.\UserA' または 'localhost\UserA' のようなものですか?

ありがとう!!

4

2 に答える 2

1

私は実際にはこれを使用していませんが、SQLCMD モードの環境変数で必要なものが見つかるかもしれません。

SQLCMDWORKSTATIONあなたが望むものをあなたに与えると私が思う特に1つがあります。

MSDNのドキュメントには、この変数の既定値はコンピューター名であると記載されています。

SQLCMD .ini ファイル内でこれらの環境変数をオーバーライドすることもできます。

それが機能しない場合でも、SQLCMD モード内で実行可能な解決策を見つけることができます。これにより、変数を SQL スクリプトに動的に挿入できます。

于 2009-12-28T11:12:43.837 に答える
1

ありがとう - 次のように SERVERPROPERTY('MachineName') を使用して、それを行う良い方法を見つけました。

DECLARE @USERNAME NVARCHAR(MAX)
DECLARE @MACHINE_NAME NVARCHAR(MAX)
SELECT @MACHINE_NAME = CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(MAX))
SET @USERNAME = @MACHINE_NAME + '\UserA'
于 2009-12-28T11:52:17.907 に答える