2017-04-25 56 views
1

我有两列添加到表TSQL添加列使用同义词

,我有与该表

相关联。例如一个代名词:

我的表名是table_abc和同义词是TABLE_1

当我尝试列添加到正常的方式表,

发生
ALTER TABLE [dbo].[table_1] 
ADD test_1 varbinary(MAX), 
test_2 varbinary(MAX); 

以下错误:因为它不是一个表

无法更改 'dbo.table_1'。

有没有正确的方法使用同义词向表中添加列?或者它只是一个错误的方式来添加一列?

非常感谢!

回答

1

你无法改变与别名表,你必须要列这样

ALTER TABLE [dbo].[table_abc] 
    ADD test_1 varbinary(MAX) 

ALTER TABLE [dbo].[table_abc] 

ADD test_2 varbinary(MAX) 
+0

但是有可能使用别名来改变表吗?因为我必须改变来自不同服务器的表格,并且表格名称因服务器而异,但是具有相同的同义词 – ProgrammingBaKa

+0

@ProgrammingBaKa不可能使用别名改变表格 – Chanukya

+0

感谢您的回答,也许我会尝试获取原始表格名称从同义词和使用动态sql> ___> – ProgrammingBaKa

1

我们不能改变在SQL Server上的表创建别名添加到该表 。

我们只能做

CREATE SYNONYM (Transact-SQL) 
DROP SYNONYM (Transact-SQL) 

如果我们想改变主表

alter table table_abc 
add test_1 varbinary(MAX), 
test_2 varbinary(MAX); 

**要从同义词名称获取表名**

SELECT base_object_name,* FROM sys.synonyms where name like'%Synonym name%'