2012-06-15 83 views
1

我有我的存儲過程中的查詢:格式字符串時使用存儲過程在SQL Server 2005

IF @backup = 0 
    BEGIN 
     SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK="'[email protected]+'"'; 
    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-log-for-the-database-has-not-been-backed-up/

有什麼建議嗎?

感謝

回答

3

而是在初始字符串中使用"的,使用''代替。 SQL知道,如果你放兩個'彼此相鄰,你的意思'出現的字符串中(而不是結束一個字符串,開始另一個。)

SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK='''[email protected]+''''; 

這看起來很奇怪,肯定的,但有用。

2
SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK='''[email protected]+'''' 
+0

然後將成爲'BACKUP DATABASE Con​​tentPlatform TO DISK = @文件' –

+0

這是錯誤的。你不能只用'''把''放在字符串中。這將終止字符串。你需要''''而不是*(對於你想要的字符串中的每個''')*。 – MatBailie

+0

修復缺少' –

相關問題