Tsql 在生成表查询中使用同义词(“select into”)

Tsql 在生成表查询中使用同义词(“select into”),tsql,synonym,select-into,Tsql,Synonym,Select Into,我一直认为T-SQL中的同义词只是一个方便的缩写。然而,当我做以下事情时 为T\u短名称\u备份创建同义词备份\u表 去 挑选* 进入备份表 来自T_的短名称 。。。我得到的错误是已经有一个名为BACKUP_TABLE的对象。我做错什么了吗?同义词是指向其他SQL表的指针。它们非常有用,这取决于你想做什么。您可以将它们指向另一个数据库中的表或另一台服务器上的表(通过链接服务器)。我们在ETL中充分利用了它们 我用于生成我的流程: 查询以动态生成同义词: SELECT 'CREATE S

我一直认为T-SQL中的同义词只是一个方便的缩写。然而,当我做以下事情时

为T\u短名称\u备份创建同义词备份\u表 去

挑选* 进入备份表 来自T_的短名称


。。。我得到的错误是已经有一个名为BACKUP_TABLE的对象。我做错什么了吗?

同义词是指向其他SQL表的指针。它们非常有用,这取决于你想做什么。您可以将它们指向另一个数据库中的表或另一台服务器上的表(通过链接服务器)。我们在ETL中充分利用了它们

我用于生成我的流程:

查询以动态生成同义词

SELECT 
    'CREATE SYNONYM [dbo].[' +TABLE_NAME+ '] FOR [' + 'Put database name here or remove' + '].[dbo].['+TABLE_NAME+']'    
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_TYPE = 'BASE TABLE'
从那里,您只需
从表中选择*u NAME

现在,回到你的问题上来。您为
BACKUP\u TABLE
创建一个同义词,该同义词指向
T\u SHORT\u NAMES\u BACKUP

尝试:
从备份表中选择*


要了解有关同义词的更多信息:
从sys中选择name、base\u object\u name。同义词是指向其他SQL表的指针。它们非常有用,这取决于你想做什么。您可以将它们指向另一个数据库中的表或另一台服务器上的表(通过链接服务器)。我们在ETL中充分利用了它们

我用于生成我的流程:

查询以动态生成同义词

SELECT 
    'CREATE SYNONYM [dbo].[' +TABLE_NAME+ '] FOR [' + 'Put database name here or remove' + '].[dbo].['+TABLE_NAME+']'    
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_TYPE = 'BASE TABLE'
从那里,您只需
从表中选择*u NAME

现在,回到你的问题上来。您为
BACKUP\u TABLE
创建一个同义词,该同义词指向
T\u SHORT\u NAMES\u BACKUP

尝试:
从备份表中选择*


要了解有关同义词的更多信息:
从sys中选择名称、基本对象名称。同义词作为
选择。。。into…
始终使用给定名称创建一个新的表对象不能存在同名的对象

只需使用
选择。。。在…
standalone中,无需添加同义词

但是如果您想在备份中添加额外的行,请使用
插入到。。。改为选择…

insert into
    T_SHORT_NAMES_BACKUP

select
    *

from
    T_SHORT_NAMES

作为
选择。。。into…
始终使用给定名称创建一个新的表对象不能存在同名的对象

只需使用
选择。。。在…
standalone中,无需添加同义词

但是如果您想在备份中添加额外的行,请使用
插入到。。。改为选择…

insert into
    T_SHORT_NAMES_BACKUP

select
    *

from
    T_SHORT_NAMES

好的,这回答了我的问题:不能在make表查询中使用同义词。但我认为SSMS可以区分同义词对象和表对象。无论如何,我需要一个同义词。脚本中有几个查询,每个查询都使用名称“T_SHORT_name_Backup”,这个名称每周都会更改。我不想更改此名称的所有实例。好的,那么只需更改语句的顺序即可。首先使用
select>将备份创建到一个新表中,并使用新的对象名。。。进入…
,然后创建此表对象的同义词。回答得好。我想这是我能期望的最好的了。我每周还有两行要换,而不是一行,但你不可能拥有全部!好的,这回答了我的问题:不能在make表查询中使用同义词。但我认为SSMS可以区分同义词对象和表对象。无论如何,我需要一个同义词。脚本中有几个查询,每个查询都使用名称“T_SHORT_name_Backup”,这个名称每周都会更改。我不想更改此名称的所有实例。好的,那么只需更改语句的顺序即可。首先使用
select>将备份创建到一个新表中,并使用新的对象名。。。进入…
,然后创建此表对象的同义词。回答得好。我想这是我能期望的最好的了。我每周还有两行要换,而不是一行,但你不可能拥有全部!