正常情况下可以用: 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))
那究竟要怎么动态设置当前数据库的?

解决方案 »

  1.   

    我要插入70多个表,每个表有约束、索引、关系等信息,
    难道这些都要用 EXEC 来执行吗?那代码写出来又麻烦又累赘
    就没有别的方法可以直接动态设置当前数据库的吗?还有设置用户的时候应该用什么方法?
      

  2.   


    动态设置USE DATABASE 这个是不行的。 
      

  3.   

    http://bbs.csdn.net/topics/190043551 你好,我和你有相同的问题,很想知道是怎么解决的?不知道你的QQ是多少,请教!
      

  4.   

    暂时解决了,用批处理
    调用 sqlcmd 命令SQL 脚本里面写(xxx.sql):
    USE [$(dbname)]
    ...
    ...
    ...批处理文件调用:
    sqlcmd -U 'sa' -P '12345678' -i "xxx.sql" -v dbname=mydatabase