T SQL Information_schema?

时间:2013-10-21 13:38:08

标签: sql database tsql sqlbulkcopy information-schema

我们有大量数据,为了节省备份时间,我的任务是创建一个仅包含指定公司代码/公司的当前数据库副本。

我被告知要研究TSQL脚本,信息模式和批量副本。我只是想知道最好的路线是什么,以及如何开始我在本地拥有最新的数据库副本。

该脚本可以通过

工作

请允许我们在顶部指定新数据库的名称以及公司表中的公司代码或ID列表。

创建一个新数据库并仅复制相关数据

1 个答案:

答案 0 :(得分:1)

可能甚至没有接近最好的方式......但是100种方法中有1种可以做到。

declare @databasename nvarchar(100) = 'roflcopter'
, @destination = 'myschema.mytable'
declare @companylist nvarchar(max) = (select stuff( select ',' +convert(nvarchar(5),companyid) from companytable where database = @databasename),1,1,'')

declare @query nvarchar(max) 
= N'use ['+@databasename+']
insert into '+@destination+' /* maybe add dynamic columns here */
select /*same dynamic columns */
from mytable /*or another variable*/
where companyid in('''+@companylist+''')
'
exec (@query)

添加你的其他变量等,以声明目标,未来的数据库名称(如果正在创建)和你想要的任何东西......动态sql可能很慢,很麻烦并且重新连接。可能想检查sp_executesql以了解exec()和executionql

之间的差异

有大量的系统程序......找到FK,列名,数据类型,pks ...你可以通过构建动态创建当前模式(在这里没有我的帮助)这些系统过程来使它复杂化,C#轻松“生成脚本”并执行它们。

也可能是你想的错误方向。