【问题标题】:Cannot find user defined datatype 'empnum' in SQL Server 2014在 SQL Server 2014 中找不到用户定义的数据类型“empnum”
【发布时间】:2016-03-15 05:04:38
【问题描述】:

当我在 SQL Server 2014 中运行以下查询以创建临时表时:

CREATE TABLE #temp 
(   
    location char(16) null, 
    location_desc varchar(25) null, 
    Emp_Num EMPNUM null
)

我收到错误:

找不到数据类型empnum。

empnum 是用户定义的数据类型。但相同的用户定义数据类型在其他存储过程中也能正常工作。

为什么我会收到这个错误?

【问题讨论】:

  • 你能告诉我们有问题的查询吗?
  • CREATE TABLE #temp ( location char(16) null, location_desc varchar(25) null, Emp_Num EMPNUM null, }

标签: sql-server-2014 temp-tables user-defined-types


【解决方案1】:

如果使用 tempdb,则需要在 model 数据库中定义类型,因为类型在 db 级别。如果已经为 model 定义了类型,那么如果 model db 没有被赋予 db_ddladmin 角色,您可能仍然会遇到权限问题。

model db 是所有新 db 的模板,tempdb 在重启之间不会持续存在,它会在每次启动时创建新的。

【讨论】:

    【解决方案2】:

    看起来user defined types 定义在database level,而不是instance level,因此必须为每个数据库定义它们。对于temporary tables,这意味着tempdb - 创建查询应该类似于以下内容:

    exec tempdb.sys.sp_executesql N'CREATE type EMPNUM ...';
    

    可以在here找到有关此主题的讨论。

    【讨论】:

    • 感谢 Alexei,您的评论帮助解决了我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多