1

ストアドプロシージャ内にクエリがあります。

IF @backup = 0
    BEGIN
       SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK="'+@file+'"';
    END

@fileでありnvarchar(MAX)backupですint

次のようなストアドプロシージャを実行すると、次のようになります。

DECLARE @return_value int

EXEC    @return_value = [dbo].[usp_cp_backup_restore_db]
        @backup = 0,
        @file = N'C:\backupFiles\MyDatabase.bak'

しかし、結果は次のようになります。 BACKUP DATABASE ContentPlatform TO DISK="C:\backupFiles\MyDatabase.bak"

正しいBACKUP DATABASE ContentPlatform TO DISK='C:\backupFiles\MyDatabase.bak' フォーマットは

BACKUP
DATABASE MyDatabase TO
DISK='C:\MyDatabase.bak'

したがって、http://dwhanalytics.wordpress.com/2011/03/15/sql-serverexclusive-access-could-not-be-obtained-because-the-database-is-in-usethe-tail-of-the- log-for-the-database-has-not-been-backed-up /

助言がありますか ?

ありがとう

4

2 に答える 2

3

"最初の文字列で使用する代わりに、代わりに使用してください''。SQLは、2つを並べて配置すると、 (1つの文字列を終了して別の文字列を開始するのではなく)文字列に表示される'ことを意味することを認識しています。'

SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK='''+@file+'''';

確かに奇妙に見えますが、機能します。

于 2012-06-15T09:13:18.807 に答える
2
SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK='''+@file+''''
于 2012-06-15T09:13:32.203 に答える