web-dev-qa-db-ja.com

別のユーザーとしてMSSQLをUNCにバックアップするためのxp_cmdshellとNetUseの代替手段はありますか

MSSQLを別のユーザーのUNCにバックアップするためのxp_cmdshellおよびNet Useの代替手段はありますか?

私は今使っています

EXEC xp_cmdshell 'Net Use \\SERVER\SHARE  Password /USER:DOMAIN\USER /PERSISTENT:yes'

実行前スクリプトとして。

ただし、xp_cmdshellはデフォルトで無効になっています(セキュリティの問題があるためだと思います)。

3
Mössler

BACKUPステートメントの場合、SQL Serverは、データベースエンジンサービスが実行されているサービスアカウントを、オペレーティングシステムとの対話用のセキュリティコンテキストとして使用します。したがって、SQLServerサービスアカウントに共有へのアクセスを許可する必要があります。 xp_cmdshellハック以外にこれを回避する方法はありません。

例えば:

SQLServerサービスがドメインユーザーMYDOMAIN\SQLUserとして実行されている場合は、このユーザーへのアクセスを許可するように共有アクセス許可を変更する必要があります。

SQLServerがNT AUTHORITY\NETWORKSERVICEとして実行されている場合、SQLServerのマシン名がSQLHOSTであるとすると、SQLHOST$へのアクセスを許可するように共有アクセス許可を変更する必要があります。

2
squillman

そのための他の方法はないと思います。

通常のTSQLバックアップスクリプトでは、ローカルディスクへのバックアップのみが許可されています。

十分なスペースがある場合は、ローカルディスクにバックアップを作成するSQLタスクを作成し、その後、PowerShellを介してUNCパスに移動できます。

これに十分なスペースがない場合:以下を使用すると、xp_cmdshellを再度アクティブ化できます...

    -- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO

参照: http://msdn.Microsoft.com/en-US/en-en/library/ms190693.aspx

0
frupfrup

Net Useを使用した後に作成されたシンボリックリンクを使用して、適切な資格情報を入力します。

Net Use \\SERVER\SHARE  Password /USER:DOMAIN\USER /PERSISTENT:yes
mklink /d \\SERVER\SHARE C:\Mounts\SHARE

次に、スクリプトで、バックアップパスとしてC:\ Mounts\SHAREを使用します。

0
austinian