gpt4 book ai didi

tsql - 在 T-SQL 脚本中创建 View

转载 作者:行者123 更新时间:2023-12-01 22:49:52 26 4
gpt4 key购买 nike

我们正在运行 SQL Server 2008 R2 并创建一个归档函数,该函数将创建一个新数据库(以后可以脱机并存储在其他地方),然后从我们的主数据库中取出数据并将其放入新数据库中,然后最后,在主数据库中创建一个 View 来查看新表中的归档数据。

我有创建数据库的脚本,在新数据库中创建存档表,从主数据库复制记录并将它们放入存档数据库并从主数据库中删除记录。现在我正在尝试编写 View 的创建脚本:

declare @sql varchar(8000)
set @sql = 'create view [' + @srcdb + '].[dbo].[vw_artrans] as
select * from [' + @srcdb + '].[dbo].artrans
union
select * from [' + @archdb + '].[dbo].artrans'
exec (@sql)

但是您不能传递数据库的名称来创建 View 。

所以我尝试了这个:

declare @sql varchar(8000)
set @sql = 'use ' + @srcdb + '
go
create view [vw_artrans] as
select * from [' + @srcdb + '].[dbo].artrans
union
select * from [' + @archdb + '].[dbo].artrans'
exec (@sql)

但它现在提示 GO 语句(语法不正确)。

为归档数据创建的数据库名称在脚本中动态确定(@archdb 包含名称),因此我无法在数据库名称中编写脚本,也无法运行第二个脚本。

最佳答案

根据@Sebastien 的回答,这里是解决方案:

declare @sql varchar(8000)

set @sql = 'EXEC ' + @srcdb + '.sys.sp_executesql N''create view [vw_artrans] as
select * from [' + @srcdb + '].[dbo].artrans
union
select * from [' + @archdb + '].[dbo].artrans'';'

exec (@sql)

关于tsql - 在 T-SQL 脚本中创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415044/

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