gpt4 book ai didi

sql-server - SQL Server - 将数据库列从 varchar 更新为 nvarchar(如果还不是 nvarchar)的脚本

转载 作者:行者123 更新时间:2023-12-02 10:33:49 26 4
gpt4 key购买 nike

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

最佳答案

您可以运行以下脚本,该脚本将为您提供一组 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'

但是,有一些警告供您引用。

  1. 这只会处理表格。您需要扫描所有存储过程和函数,以确保它们也更改为 NVARCHAR
  2. 如果您有 VARCHAR > 4000,则需要将其修改为 NVARCHAR(MAX)

但使用此模板应该可以轻松实现这些。

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

关于sql-server - SQL Server - 将数据库列从 varchar 更新为 nvarchar(如果还不是 nvarchar)的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com