我已经使用Stackoverflow已有一段时间了,但这是我第一次发布问题...请保持温柔。
我为HR软件提供商工作,并且正在研究将数据从一个数据库复制到另一个数据库的过程。
我有以下脚本,这些脚本将基于客户端可以在系统中创建的自定义表生成插入语句:
select 'IF NOT EXISTS (SELECT * FROM [__TARGETINST__].[__TARGETDB__].[dbo].[SysObjects] o
INNER JOIN [__TARGETINST__].[__TARGETDB__].[dbo].[SysColumns]
c ON o.ID = c.ID WHERE o.name ='
+ '''' + name + '''' + ') ' +'Begin' + ' ' + 'CREATE TABLE' + ' ' + name + '
(Employeeid UniqueIdentifier NOT NULL, ' + 'Sequence bigint NOT NULL,RUID
UniqueIdentifier NOT NULL,' +
'SYS_EffectiveDate datetime NOT NULL, SYS_ModifiedBy Nvarchar(50) NULL,
SYS_ModifiedDate datetime NOT NULL,' + 'SYS_RequestID UniqueIdentifier NULL,
Primary Key (Employeeid, sequence),' +
' Foreign key (employeeid) references employee(employeeid))' + ' end'
from [__SOURCEINST__].[__SOURCEDB__].sys.tables
where name like '%_client'
and name in (select dbtable from [__SOURCEINST__].[__SOURCEDB__].[dbo]
IntranetPages)
and name not in ('Employeetable1_CLIENT','Employeetable2_CLIENT')
and type_desc = 'USER_TABLE'
这最终将创建一些旨在在 TARGETDB 中创建空表的插入语句,例如:
IF NOT EXISTS
(
SELECT * FROM [__TARGETINST__].[__TARGETDB__].[dbo].[SysObjects] o
INNER JOIN [__TARGETINST__].[__TARGETDB__].[dbo].[SysColumns] c
ON o.ID = c.ID WHERE o.name ='newtable_CLIENT'
)
Begin
CREATE TABLE newtable_CLIENT
(
Employeeid UniqueIdentifier NOT NULL,
Sequence bigint NOT NULL,
RUID UniqueIdentifier NOT NULL,
SYS_EffectiveDate datetime NOT NULL,
SYS_ModifiedBy Nvarchar(50) NULL,
SYS_ModifiedDate datetime NOT NULL,
SYS_RequestID UniqueIdentifier NULL,
Primary Key (Employeeid, sequence),
Foreign key (employeeid) references employee(employeeid)
)
end
我认为我的问题是涉及3个实例。 [ TARGETINST ]和[ SOURCEINST ]未链接(怕无法链接),但我确实有另一个实例与它们两个都链接了。我正在尝试在“ TRANSFERINST”上运行脚本,但遇到以下错误:
Msg 1767, Level 16, State 0, Line 52
Foreign key '__KEY__' references invalid table 'employee'.
我认为这是Create的问题,因为SQL不知道在哪里创建表。所以我更新为:
IF NOT EXISTS
(
SELECT * FROM [__TARGETINST__].[__TARGETDB__].[dbo].[SysObjects] o
INNER JOIN [__TARGETINST__].[__TARGETDB__].[dbo].[SysColumns] c
ON o.ID = c.ID WHERE o.name ='newtable_CLIENT'
)
Begin
CREATE TABLE [__TARGETINST__].[__TARGETDB__].[dbo].newtable_CLIENT
(
Employeeid UniqueIdentifier NOT NULL,
Sequence bigint NOT NULL,
RUID UniqueIdentifier NOT NULL,
SYS_EffectiveDate datetime NOT NULL,
SYS_ModifiedBy Nvarchar(50) NULL,
SYS_ModifiedDate datetime NOT NULL,
SYS_RequestID UniqueIdentifier NULL,
Primary Key (Employeeid, sequence),
Foreign key (employeeid) references employee(employeeid)
)
end
但随后收到以下消息:
对象名称'[ TARGETINST ]。[ TARGETDB ]。dbo.newtable'包含的前缀数量超过最大数量。最大值为2。
我现在有些困惑,在我进行的任何搜索中似乎都找不到答案。
我什至不确定是否可以在另一个实例上创建空白表。我可以从“ TRANSFERINST”查询和更新不同的数据库。
我已经看到可以“选择*进入”,但是我需要将表留空,以便该过程中的下一个脚本可以创建相关的自定义列。表格和列到位后,我将根据 SOURCEDB 中保存的数据来填充它们。
希望这很有意义,并期待听到您的想法。
干杯。
答案 0 :(得分:0)
弄清楚了。
只需将创建表包装在执行'AT'中
curl -X POST "http://localhost:5601/api/saved_objects/index-pattern/logstash" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'
{
"attributes": {
"title": "logstash-*","timeFieldName": "time"
}
}'
当您知道如何时,就这么简单!