【问题标题】:Tsql add column using synonymsTsql使用同义词添加列
【发布时间】:2017-09-21 22:48:18
【问题描述】:

我必须在表格中添加两列

我有一个与该表关联的同义词

例如:

我的表名是table_abc,同义词是table_1

当我尝试以正常方式向表格添加列时,

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

出现以下错误:

无法更改“dbo.table_1”,因为它不是表。

是否有使用同义词向表中添加列的正确方法?还是只是添加列的错误方式?

非常感谢!

【问题讨论】:

    标签: sql-server tsql sql-server-2005


    【解决方案1】:

    您不能使用别名更改表,您必须向表中添加列 这样

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

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

    【讨论】:

    • 但是可以使用别名来修改表吗?由于我必须更改来自不同服务器的表,并且表名因服务器而异,但同义词相同
    • @ProgrammingBaKa 无法使用别名更改表
    • 感谢您的回答,也许我会尝试从同义词中获取原始表名并使用动态sql>___>
    • 你可以改变同一服务器中不同数据库的表@ProgrammingBaKa
    • 但问题是我不知道服务器中表的实际名称,只知道表的同义词
    【解决方案2】:

    我们无法更改在 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%'
    

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      相关资源
      最近更新 更多