尝试使用联机选项(例如 )删除非聚集索引时DROP INDEX [IX_MYINDEX] ON [dbo].[myTable] WITH ( ONLINE = ON )
,我收到以下错误消息。
Msg 3745, Level 16, State 1, Line 16
Only a clustered index can be dropped online.
Run Code Online (Sandbox Code Playgroud)
SQL Server 文档明确指出:
只有在删除聚集索引时才能指定 ONLINE 选项。
https://msdn.microsoft.com/en-us/library/ms176118.aspx
但是有人可以向我解释为什么会这样吗?根据我的经验,与聚集索引相比,您更有可能删除非聚集索引,因为在大多数情况下聚集索引也是您的主键。
我在 SQL 2008 R2 中设置了一个扩展事件会话来跟踪deprecation_final_support和deprecation_announcement事件。我注意到我的日志中有一些“deprecation_announcement”事件带有“XP_API”的“特性”,这些事件似乎都是使用SP_EXECUTESQL
.
事件消息说:
SQL Server 的未来版本中将删除扩展存储过程 API。避免在新的开发工作中使用此功能,并计划修改当前使用它的应用程序。
sql_text
来自事件的操作的一个示例是:
exec sp_executesql N'DECLARE @c varbinary(128);SET @c=cast(@userName as varbinary(128));SET CONTEXT_INFO @c;', N'@userName varchar(128)', @userName = 'MYDOMAIN\myuser';
Run Code Online (Sandbox Code Playgroud)
该master.sys.SP_EXECUTESQL
proc 列在对象资源管理器中的“数据库 > 系统数据库 > 主 > 可编程性 > 扩展存储过程 > 系统扩展存储过程”下。
这是否意味着sp_executesql
SQL Server 的未来版本将不支持它?
sql-server sql-server-2008-r2 extended-events extended-stored-procedure
我使用 SQL Server 2014 链接服务器连接到 Oracle 11gR2 (11.2.0.3) 数据库,使用 ODAC 12.1.0.2.4 Oracle OLE DB 提供程序。我有一个存储过程,它位于 SQL 2014 数据库中,并使用以下语法通过链接服务器将本地表中的数据插入到远程 Oracle 表中:
insert into LinkedServerName..RemoteSchema.RemoteTable(column)
select column from localSQLServerTable
Run Code Online (Sandbox Code Playgroud)
但是,我在插入行中收到以下错误:
消息 7356,级别 16,状态 1,过程 {MyProcName},第 1 行链接服务器“{MyLinkedServer}”的 OLE DB 提供程序“OraOLEDB.Oracle”为列提供了不一致的元数据。据报告,对象“{remote table name}”的列“{columnName}”(编译时序数为 23)在编译时的“DBCOLUMNFLAGS_ISFIXEDLENGTH”为 16,在运行时为 0。
有问题的列在 Oracle 中定义为CHAR(1 BYTE)
数据类型。
安装了“64 位 ODAC 12c 第 4 版 (12.1.0.2.4) Xcopy for Windows x64”,从http://www.oracle.com/technetwork/database/windows/downloads/index-下载名称“ODAC121024Xcopy_x64.zip” 090165.html
sql-server ×3