当前位置:  开发笔记 > 数据库 > 正文

SQL Server - 用于将数据库列从varchar更新为nvarchar的脚本(如果尚未nvarchar)

如何解决《SQLServer-用于将数据库列从varchar更新为nvarchar的脚本(如果尚未nvarchar)》经验,为你挑选了1个好方法。

我遇到的情况是我必须使用脚本将现有的数据库结构从varchar更新为nvarchar.由于每次运行配置应用程序时都会运行此脚本,因此我宁愿确定列是否已更改为nvarchar而不是对表执行alter.我必须支持的数据库是SQL Server 2000,2005和2008.



1> Josef..:

您可以运行以下脚本,它将为您提供一组ALTER命令:

SELECT 'ALTER TABLE ' + isnull(schema_name(syo.id), 'dbo') + '.' +  syo.name 
    + ' ALTER COLUMN ' + syc.name + ' NVARCHAR(' + case syc.length when -1 then 'MAX' 
        ELSE convert(nvarchar(10),syc.length) end + ');'
   FROM sysobjects syo
   JOIN syscolumns syc ON
     syc.id = syo.id
   JOIN systypes syt ON
     syt.xtype = syc.xtype
   WHERE 
     syt.name = 'varchar' 
    and syo.xtype='U'

但是,对你来说有几个快速的警告.

    这只会做表格.您将要扫描所有的sprocs和函数,以确保它们也被更改NVARCHAR为.

    如果您有VARCHAR> 4000,则需要将其修改为NVARCHAR(MAX)

但是这些模板应该很容易实现.

如果您希望自动运行,可以在WHILE子句中设置它.


请注意这一点,因为您将获得新列的所有默认值.例如,非null varchar将被创建为可空的nvarchar.
推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有