代码之家  ›  专栏  ›  技术社区  ›  Jonathan Stanton

sp_helpText作为响应剥离dbo架构时出现问题

  •  1
  • Jonathan Stanton  · 技术社区  · 7 年前

    当我打电话给下面的人

    EXEC sp_HelpText 'dbo.NameOfTrigger'

    我把下面的东西还给你

    CREATE TRIGGER NameOfTrigger ON [dbo].[NameOfTable] FOR INSERT, UPDATE, DELETE

    但是,当我在另一个模式上调用同一类型的调用时

    EXEC sp_HelpText 'AnotherSchema.NameOfTrigger'

    我知道结果了

    CREATE TRIGGER [AnotherSchema].[NameOfTrigger] ON [AnotherSchema].[NameOfTable]

    是否有方法强制SQL Server(MSSQL 2014)将添加到触发器名称的[DBO]包括在内,例如

    CREATE TRIGGER [dbo].[NameOfTrigger] ON [dbo].[NameOfTable] FOR INSERT, UPDATE, DELETE

    对于实体框架中的某些代码,我们需要使用此代码来处理自定义迁移SQL生成中的表重命名。

    1 回复  |  直到 7 年前
        1
  •  1
  •   squillman Johnny Fitz    7 年前

    我正在我的开发环境中尝试一些东西,看看是否可以复制您的问题。似乎您的触发器最初是在create trigger语句中没有指定dbo模式的情况下创建的。

    此CREATE TRIGGER语句导致dbo架构显示在sp_helpText结果中:

    CREATE TRIGGER dbo.NameOfTrigger ON ...

    然而,这一个没有:

    CREATE TRIGGER NameOfTrigger ON ...

    (第二条语句仍然将模式默认为dbo。)

    例子:

    sp_helptext example

    所以我想说尝试删除并重新创建触发器,但这次在create trigger语句中使用dbo模式。那你就可以喂EF了。

    把另一个记为“总是指定模式”…