如果USE {invalid_database_name}失敗,最好的處理方法是什麼?我想在這種情況下忽略其餘的陳述。這是爲了避免在錯誤的數據庫上意外運行腳本。 感謝您的建議!SQL SERVER 2005 USE語句
4
A
回答
1
要檢查數據庫是否存在:
IF DB_ID("<your database>" IS NOT NULL
BEGIN
// Your code here
END
,或者如果它是一個存儲過程:
IF DB_ID("<your database>" IS NULL
BEGIN
RETURN
END
這是更好的,當搜索在sysobjects。
2
3
存在SSMS中SQLCMD mode運行腳本,並使用:on error exit
。如果從應用程序運行腳本,請使用兼容sqlcmd模式的庫,如dbutilsqlcmd。
編輯
什麼許多答覆建議各種形式的IF
和RETURN
和sp_executesql
缺少的是,他們只解決不執行一批(通過該分隔GO
序列)的問題。這在討論腳本時很有用。驗證數據庫存在的批處理會跳過這些語句,但是,腳本中的下一批將繼續執行它在當前數據庫中執行的任何操作(例如,創建表),而不是在所需的數據庫中。在每批請求中添加一個檢查是很繁瑣和容易出錯的,將整個腳本放在一個批次中通常是不可能的。最好的解決辦法是簡單地做一個USE <inexisting name>
並依靠:on error exit
中斷第一個錯誤的腳本執行。
0
嘗試使用此
begin try
declare @use nvarchar(50)
set @use= 'use MyDB'
exec sp_executesql @use
select top 1 * from MyDB.dbo.TableA
end try
begin catch
print @@ERROR --Error Number of Database not Found
print Error_message() -- Proper Message
end catch
相關問題
- 1. 的SQL Server 2005:CASE語句問題
- 2. SQL Server 2005中的IIF語句
- 3. MySQL USE語句無效
- 4. 在SQL Server中使用本地變量和「use」語句
- 5. SQL Server 2005 FOR XML子句
- 6. 此OUTPUT語句(SQL Server 2005)的語法有什麼問題?
- 7. 如何監視SQL Server 2005上執行的sql語句
- 8. 插入語句2005
- 9. 嵌套SQL SELECT語句失敗SQL Server 2000上,確定SQL Server 2005的
- 10. SQL Server 2005事務
- 11. Update語句2005
- 12. 是否可以在SQL Server 2005中使用'USE'語句切換到鏈接服務器上的數據庫?
- 13. SQL server T-SQL語句
- 14. 動態WHERE語句 - SQL服務器2005
- 15. where語句中的case語句 - SQL Server
- 16. SQL Server 2005 - 使用case語句進行查詢
- 17. 顯示在SQL Server中的UNION語句中的每個列2005
- 18. NOLOCK是SQL Server 2005中SELECT語句的默認值嗎?
- 19. 選擇語句中的Concat兩列sql server 2005
- 20. 獲得從數值名稱在SELECT語句+ SQL Server 2005的
- 21. 在SQL Server 2005的插入語句中使用子查詢
- 22. 帶有更新語句的SQL Server 2005插入觸發器
- 23. 如何運營商之間有case語句在SQL Server 2005中
- 24. SQL Server 2005中的多標準case語句
- 25. 如果不存在的語句在SQL Server 2005
- 26. 執行交易中的語句 - Sql Server 2005
- 27. SQL Server 2005 - Select語句中的表函數
- 28. 在sql server 2005的select語句中使用變量inplace table
- 29. SQL Server 2005 - 構建WHERE子句
- 30. 錯誤更新T-SQL在SQL Server 2005
謝謝..它的工作原理。 – 2011-06-17 07:34:15