1

我的存储过程中有一个查询:

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

@filenvarchar(MAX)backupint

如果我执行如下存储过程:

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-未备份的数据库日志/

有什么建议么 ?

谢谢

4

2 回答 2

3

不要"在初始字符串中使用,''而是使用。SQL 知道,如果您将两个并排放置',您的意思'是出现在字符串中(而不是结束一个字符串并开始另一个字符串。)

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 回答