摘要:
下文讲述sqlserver索引中禁止使用的数据类型说明,如下所示:
实验环境:sql server 2008 R2
紧致创建索引的数据类型:
序号 | 数据类型 | 说明 |
1 | CLR定义的数据类型 | 此类型如果支持二进制顺序,则可以进行索引设置 |
2 | lob类型 image 类型 next text varchar(max) nvarchar(max) varbinary(max)类型 |
摘要:
下文讲述sqlserver索引中禁止使用的数据类型说明,如下所示:
实验环境:sql server 2008 R2
序号 | 数据类型 | 说明 |
1 | CLR定义的数据类型 | 此类型如果支持二进制顺序,则可以进行索引设置 |
2 | lob类型 image 类型 next text varchar(max) nvarchar(max) varbinary(max)类型 |
摘要:
下文分享sqlserver数据表上索引设置的相关限制说明信息,如下所示:
实验环境:sql server 2008 R2
索引类型 | 索引数量 | 索引限制说明 |
聚集索引 | 1 | 由于聚集索引是展示物理表的物理存储顺序,所以每张表只存在一张聚集索引 |
非聚集索引 | 249 | 不包含xml索引的其它索引 |
xml索引 | 249 | 包含xml数据类型列的索引 |
表空间索引 | 249 | |
索引键列数 | 16 | 大于16列则出现相应的错误信息 |
最大索引键大小 | 900字节 | 如果索引键总和大于900字节,将出现警告或索引创建失败 |
摘要:
今天使用sql server 2008 创建存储过程,在存储过程中使用系统存储过程”sp_executesql”动态运行sql脚本,提示错误信息,
————————————————————
过程需要类型为 ‘ntext/nchar/nvarchar’ 的参数 ‘@statement’
先将解决方法记录如下:
通过翻看
MSSQL sp_executesql exec 用法简介,发现sp_executesql存储过程接收动态sql需为nchar 、ntext、nvarchar 三种类型,即再动态定义sql时候,将其类型修改为以上三种类型中的任意一种,即可完成相关操作。
例:
IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[pr_test]') AND type IN (N'P', N'PC')) DROP PROCEDURE [dbo].[pr_test] GO create proc pr_test @str varchar(30) as begin declare @sql varchar(max) set @sql='select * from tableName where [info]=@str ' exec sp_executesql @sql,N'@str varchar(30)',@str end ----运行存储过程----- exec pr_test 'test' ---弹出相应的错误信息 ---过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'
将动态sql变量参数类型修改为nvarchar重新运行及完成相关操作.
IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[pr_test]') AND type IN (N'P', N'PC')) DROP PROCEDURE [dbo].[pr_test] GO create proc pr_test @str varchar(30) as begin declare @sql nvarchar(max) ---动态变量接收sql信息必须使用 'ntext/nchar/nvarchar' 类型 set @sql='select * from tableName where [info]=@str ' exec sp_executesql @sql,N'@str varchar(30)',@str end ----运行存储过程----- exec pr_test 'test' ----输出相应的查询结果-----