在我们的数据库中,有一个用创建的表ANSI_NULLS OFF
。现在,我们使用此表创建了一个视图。我们想为此视图添加聚簇索引。
创建聚簇索引时,它会显示一个错误,例如无法创建索引,因为此特定表的ANSI_NULL已关闭。
该表包含大量数据。因此,我想将此选项更改为ON,而不会丢失任何数据。
有什么方法可以更改表来修改此选项。请提出您的建议。
这是交叉发布在数据库管理员上的,所以我也可以在这里发布我的答案,以帮助将来的搜索者。
可以使用仅更改元数据(即,无需将所有数据迁移到新表)进行更改ALTER TABLE ... SWITCH
。
下面的示例代码
/*Create table with option off*/
SET ANSI_NULLS OFF;
CREATE TABLE dbo.YourTable (X INT)
/*Add some data*/
INSERT INTO dbo.YourTable VALUES (1),(2),(3)
/*Confirm the bit is set to 0*/
SELECT uses_ansi_nulls, *
FROM sys.tables
WHERE object_id = object_id('dbo.YourTable')
GO
BEGIN TRY
BEGIN TRANSACTION;
/*Create new table with identical structure but option on*/
SET ANSI_NULLS ON;
CREATE TABLE dbo.YourTableNew (X INT)
/*Metadata only switch*/
ALTER TABLE dbo.YourTable SWITCH TO dbo.YourTableNew;
DROP TABLE dbo.YourTable;
EXECUTE sp_rename N'dbo.YourTableNew', N'YourTable','OBJECT';
/*Confirm the bit is set to 1*/
SELECT uses_ansi_nulls, *
FROM sys.tables
WHERE object_id = object_id('dbo.YourTable')
/*Data still there!*/
SELECT *
FROM dbo.YourTable
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
PRINT ERROR_MESSAGE();
END CATCH;
警告:当表包含IDENTITY列时,您需要重新设定IDENTITY值。SWITCH TO将重置身份列的种子,并且如果您对身份没有UNIQUE或PRIMARY
KEY约束(例如,在SQL 2014中使用CLUSTERED COLUMNSTORE索引时),您将不会立即注意到它。您需要使用DBCC
CHECKIDENT(“ dbo.YourTable”,RESEED,[重新设置的种子值])来再次正确设置种子的值。
问题内容: 也许我弄错了,但是我虽然JPA能够更新现有表(更改了添加列的模型),但在我的情况下却无法正常工作。 我可以在日志中看到eclipselink尝试创建它,但是由于它已经存在而失败。它不会尝试更新以添加该列,而是继续进行。 这是带有更改的表(添加了在线列) 此后,继续进行以下操作。 我是在做错什么还是错误? 问题答案: 从EclipseLink 2.4开始,您可以在持久性单元的规范中使用它
我正在尝试在现有列表中添加一个新项目,但无法添加。当我调试时,它显示返回为true,但最终新项没有添加到列表中。 我的示例代码如下:Employee employee1=new Employee(5001,“BOB”,financeDept.getDepartment_name());employee2=新员工(5002,“SAM”,FinanceDepartment.getDepartment_
问题内容: 我有一个已经安排好的石英作业。我想更新与之关联的JobDataMap。如果我通过获得JobDataMap ,该地图是否“实时”?即。如果我更改它,它将保留在调度程序中吗?如果没有,我该如何坚持呢? 问题答案: 参见http://www.quartz- scheduler.org/docs/tutorial/TutorialLesson03.html : Job实例可以定义为“有状态”或
我正在与Laravel 5.6与MySql数据库在我的Web应用程序。 我有下面的函数方法来添加顺序, 在我的系统中,我有以下车辆的表名, 现在我需要更新上面的表adtype值从0到1,当点击提交按钮关于上面的addorder函数。那么如何编写代码来更新上面函数中的代码呢???? 我的网址如下...... 路线是,
问题内容: 我的桌子上有很多记录(可能超过500 000或1 000 000)。我在此表中添加了一个新列,我需要使用该表中另一列的相应行值为该列中的每一行填充一个值。 我尝试使用单独的事务来选择每100条记录的下一个块并为其更新值,但是例如,要花费数小时来更新Oracle10中的所有记录。 在不使用某些方言特定功能的情况下,在SQL中执行此操作的最有效方法是什么,因此它可在任何地方(Oracle,
问题内容: 我使用bootstrap multi-select,我想使用ajax更新流选项 要在init中填充我的多选 然后在事件上我想用以下ajax更新我的选项列表 我尝试使用rebuild方法,但是创建后不会触发下拉菜单 使用萤火虫,我可以看到已生成列表,但选择后不会显示 问题答案: 在文档中,我可以阅读: .multiselect(’setOptions’,options)用于在初始化mul