如何动态设置当前数据库(SQL2000)

Sandrer 2013-06-20 05:44:57
正常情况下可以用: USE xxxx 来设置当前数据库

但当数据库名是一个变量的话,该怎么做?

USE [master]

DECLARE @dbname SYSNAME
SELECT @dbname = N'testdb'

IF DB_ID(@dbname) IS NOT NULL --这里执行成功
EXEC('DROP DATABASE ' + @dbname) --这里执行成功

EXEC('CREATE DATABASE ' + @dbname) --这里执行成功

EXEC('USE ' + @dbname) --这里执行没反应

--下面这个表,建在master表上面了
CREATE TABLE testtable([ID] INT IDENTITY(1, 1) PRIMARY KEY, test VARCHAR(10))


那究竟要怎么动态设置当前数据库的?
...全文
316 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sandrer 2013-06-24
  • 打赏
  • 举报
回复
暂时解决了,用批处理 调用 sqlcmd 命令 SQL 脚本里面写(xxx.sql): USE [$(dbname)] ... ... ... 批处理文件调用: sqlcmd -U 'sa' -P '12345678' -i "xxx.sql" -v dbname=mydatabase
KevinLiu 2013-06-21
  • 打赏
  • 举报
回复
引用 2 楼 Sandrer 的回复:
我要插入70多个表,每个表有约束、索引、关系等信息, 难道这些都要用 EXEC 来执行吗?那代码写出来又麻烦又累赘 就没有别的方法可以直接动态设置当前数据库的吗? 还有设置用户的时候应该用什么方法?
动态设置USE DATABASE 这个是不行的。
wujingyi2011 2013-06-21
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/190043551 你好,我和你有相同的问题,很想知道是怎么解决的?不知道你的QQ是多少,请教!
Sandrer 2013-06-20
  • 打赏
  • 举报
回复
我要插入70多个表,每个表有约束、索引、关系等信息, 难道这些都要用 EXEC 来执行吗?那代码写出来又麻烦又累赘 就没有别的方法可以直接动态设置当前数据库的吗? 还有设置用户的时候应该用什么方法?
最爱午夜 2013-06-20
  • 打赏
  • 举报
回复
拼查询语句,查询的时候指定:数据库名.架构名.表名

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧