如果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中的USE语句
- 2. SQL脚本USE语句 - C#
- 3. 的SQL Server 2005:CASE语句问题
- 4. SQL Server 2005中的IIF语句
- 5. SQL Server 2005 FOR XML子句
- 6. MySQL USE语句无效
- 7. 在SQL Server中使用本地变量和“use”语句
- 8. 此OUTPUT语句(SQL Server 2005)的语法有什么问题?
- 9. 如何监视SQL Server 2005上执行的sql语句
- 10. 插入语句2005
- 11. SQL Server 2005事务
- 12. 嵌套SQL SELECT语句失败SQL Server 2000上,确定SQL Server 2005的
- 13. Update语句2005
- 14. 是否可以在SQL Server 2005中使用'USE'语句切换到链接服务器上的数据库?
- 15. 动态WHERE语句 - SQL服务器2005
- 16. SQL server T-SQL语句
- 17. 的MySQL变量(USE语句)
- 18. OPENQUERY语句中的'use'
- 19. SQL USE INDEX语法错误
- 20. 执行交易中的语句 - Sql Server 2005
- 21. 在SQL Server 2005的插入语句中使用子查询
- 22. 获得从数值名称在SELECT语句+ SQL Server 2005的
- 23. 如何增加在SQL Server在INSERT语句中的主键2005
- 24. 如何运营商之间有case语句在SQL Server 2005中
- 25. 添加N'字符之前插入语句SQL Server 2005
- 26. SQL Server 2005 - 使用case语句进行查询
- 27. SQL Server 2005 - Select语句中的表函数
- 28. 选择语句中的Concat两列sql server 2005
- 29. 在sql server 2005的select语句中使用变量inplace table
- 30. SQL Server 2005中的SET NOCOUNT可以包含单个语句吗?
谢谢..它的工作原理。 – 2011-06-17 07:34:15