Man*_*jan 64
据我所知,无法更改/修改表类型.您可以使用不同的名称创建类型,然后删除旧类型并将其修改为新名称
积分jkrajes
根据msdn,它就像'用户定义的表类型定义在创建后无法修改'.
nor*_*ndo 34
这是一种黑客攻击,但似乎确实有效.以下是修改表类型的步骤和示例.需要注意的是,如果对表类型所做的更改是对该对象(通常是过程)的重大更改,则sp_refreshsqlmodule将失败.
sp_rename重命名表的类型,我通常只是添加Z到名字的开头.sp_refreshsqlmodule在其上运行.EXEC sys.sp_rename 'dbo.MyTableType', 'zMyTableType';
GO
CREATE TYPE dbo.MyTableType AS TABLE(
Id INT NOT NULL,
Name VARCHAR(255) NOT NULL
);
GO
DECLARE @Name NVARCHAR(776);
DECLARE REF_CURSOR CURSOR FOR
SELECT referencing_schema_name + '.' + referencing_entity_name
FROM sys.dm_sql_referencing_entities('dbo.MyTableType', 'TYPE');
OPEN REF_CURSOR;
FETCH NEXT FROM REF_CURSOR INTO @Name;
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC sys.sp_refreshsqlmodule @name = @Name;
FETCH NEXT FROM REF_CURSOR INTO @Name;
END;
CLOSE REF_CURSOR;
DEALLOCATE REF_CURSOR;
GO
DROP TYPE dbo.zMyTableType;
GO
Run Code Online (Sandbox Code Playgroud)
警告:
这可能会破坏您的数据库,因此您首先需要在开发环境中对此进行测试.
And*_*ght 12
这里有一些简单的步骤可以最大限度地减少乏味,并且不需要容易出错的半自动脚本或昂贵的工具.
请记住,您可以从"对象资源管理器详细信息"窗口生成多个对象的DROP/CREATE语句(以这种方式生成时,DROP和CREATE脚本会进行分组,这使得在Drop和Create操作之间插入逻辑变得容易):

如果您的项目较小,可能需要更改基础架构体系结构,请考虑删除用户定义的表类型.实体框架和类似工具允许您将大部分(如果不是全部)数据逻辑移动到更容易维护的代码库中.
小智 5
Simon Zeinstra找到了解决方案!
但是,我使用了Visual Studio community 2015,甚至没有使用架构比较。
使用SQL Server Object Explorer,我在数据库中找到了用户定义的表类型。我右键单击表格类型并选择。这在IDE中打开了一个代码选项卡,其中TSQL代码可见且可编辑。我只是简单地更改了定义(就我而言,只是增加了nvarchar字段的大小),然后单击了选项卡左上角的“ 更新数据库”按钮。
嗨,普雷斯托!-快速检查SSMS并修改了udtt定义。
辉煌-感谢Simon。
| 归档时间: |
|
| 查看次数: |
103249 次 |
| 最近记录: |