sql - 为什么我不能动态更改数据库 SQL Server 2008

标签 sql sql-server

以下内容无效,我肯定遗漏了明显的内容,但如果有人能解释为什么无效,那就太好了。我需要动态更改数据库。

打印输出看起来不错,但不会更改 SQL Server 下拉列表中的数据库。

DECLARE @tempSql nvarchar(4000);
DECLARE @FinalSQL nvarchar(4000);
DECLARE @dbName varchar(100);

SET @dbName = 'Pubs';
SET @tempSql = 'SELECT DB_NAME()';

SET @FinalSQL = 'USE ' + @dbName + '; EXEC sp_executesql N''' + @tempSql + '''';
EXEC (@FinalSQL)

最佳答案

如果您可以选择 SQLCMD 模式(例如,在 SSMS 中),您可以这样做:

:setvar dbname Pubs
USE [$(dbname)]
SELECT DB_NAME()

或者,您的原始语法非常接近。试试这个:

DECLARE @db AS NVARCHAR(258);
SET @db = QUOTENAME(N'Pubs');
EXEC(N'USE ' + @db + N'; EXEC(''SELECT DB_NAME();'');');
GO

关于sql - 为什么我不能动态更改数据库 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937440/

相关文章:

mysql - SQL根据连续日期获取值的变化

jquery - 不断收到错误警告:PDOStatement::execute() 最多需要 1 个参数,2 个在 config.php 第 15 行中给出

sql - 查询结果组织

mysql - SQL查询结果返回集相同的id具有不同的值

sql - 这可以在 SQL 2008 中完成吗?

sql-server - 在虚拟框中将 Java EE 应用程序与 Sql Server 连接

c# - 从 Visual Studio SQL 项目创建用于测试的 LocalDB

sql - 从 Firebird 中删除制表

sql - 删除 SQL 中没有主键的重复条目

php - 无法从 mysql 存储过程中看到任何值