正常情况下可以用: 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))
那究竟要怎么动态设置当前数据库的?
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))
那究竟要怎么动态设置当前数据库的?
难道这些都要用 EXEC 来执行吗?那代码写出来又麻烦又累赘
就没有别的方法可以直接动态设置当前数据库的吗?还有设置用户的时候应该用什么方法?
动态设置USE DATABASE 这个是不行的。
调用 sqlcmd 命令SQL 脚本里面写(xxx.sql):
USE [$(dbname)]
...
...
...批处理文件调用:
sqlcmd -U 'sa' -P '12345678' -i "xxx.sql" -v dbname=mydatabase