gpt4 book ai didi

sql-server - 如何更改 SQL Server 中数据库表中的 TEXT 列?

转载 作者:行者123 更新时间:2023-12-04 01:06:57 25 4
gpt4 key购买 nike

在 SQL Server 数据库中,我有一个包含 TEXT 字段的表,该字段设置为允许 NULL。我需要将其更改为不允许 NULL。我可以通过 Enterprise Manager 毫无问题地执行此操作,但是当我尝试运行以下脚本时,alter table dbo.[EventLog] Alter column [Message] text Not null,我收到错误消息: p>

无法更改“ErrorMessage”列,因为它是“text”。

阅读 SQL 在线书籍确实表明您不允许在 TEXT 字段上执行 ALTER COLUMN。不过,我确实需要能够通过脚本来执行此操作,而不是在企业管理器中手动执行。那么在脚本中执行此操作的选项是什么?

最佳答案

您可以使用企业管理器来创建您的脚本。右键单击 EM 中的表并选择设计。取消选中文本字段的允许空值列。不要点击常规的保存图标(软盘),而是单击一个看起来像带有小软盘的金色卷轴的图标,或者只需从菜单中执行表设计器 > 生成更改脚本。将脚本保存到一个文件中,以便您可以重复使用它。这是一个示例脚本:

    /* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_TestTable
(
tableKey int NOT NULL,
Description varchar(50) NOT NULL,
TextData text NOT NULL
) ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
EXEC('INSERT INTO dbo.Tmp_TestTable (tableKey, Description, TextData)
SELECT tableKey, Description, TextData FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.TestTable
GO
EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT'
GO
ALTER TABLE dbo.TestTable ADD CONSTRAINT
PK_TestTable PRIMARY KEY CLUSTERED
(
tableKey
) ON [PRIMARY]

GO
COMMIT

关于sql-server - 如何更改 SQL Server 中数据库表中的 TEXT 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/82721/

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