gpt4 book ai didi

SQL Server : Change current database via variable

转载 作者:行者123 更新时间:2023-12-02 10:53:09 24 4
gpt4 key购买 nike

我正在使用 SQL Server 2008,并尝试将当前数据库名称更改为变量中的名称。我通常使用语句 USE myDatabaseName 明确执行此操作。出现这个问题是因为如果我正在运行一个脚本并且如果我不更改数据库名称,它会在 [master] 数据库中创建所有表。

我尝试了以下方法,但似乎不起作用,因为它不断将其余的创建表代码应用于[master]

DECLARE @dbName CHAR(50)
DECLARE @SqlQuery varchar(50)
SET @dbName = 'MyNewDatabaseName'

IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = @dbName)
BEGIN
SELECT @SqlQuery = 'CREATE DATABASE ' + @dbName + 'COLLATE SQL_Latin1_General_CP1_CI_AS'
EXEC(@SqlQuery)
END

Select @SqlQuery = 'Use ' + @dbName
EXEC(@SqlQuery)
go

最佳答案

在动态 SQL 中执行 USE some_db 确实有效,但不幸的是,当范围退出时,数据库上下文会变回原来的状态。

您可以使用sqlcmd模式(在 Management Studio 中的“查询”菜单上启用此功能)。

:setvar dbname "MyNewDatabaseName" 

IF DB_ID('$(dbname)') IS NULL
BEGIN

DECLARE @SqlQuery NVARCHAR(1000);
SET @SqlQuery = N'CREATE DATABASE ' + QUOTENAME('$(dbname)') + '
COLLATE SQL_Latin1_General_CP1_CI_AS'
EXEC(@SqlQuery)

END

GO

USE $(dbname)

GO

关于SQL Server : Change current database via variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com