当前位置:首页 » 编程语言 » sql包含的前缀超出最大限制
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql包含的前缀超出最大限制

发布时间: 2022-12-29 00:43:54

‘壹’ sql Server 存储过程参数最大长度限制是多少

sqlserver中varchar最大长度是8000,但是可以使用varchar(max),可以达到2G。
关于解释:
有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。

‘贰’ sqlserver提示超过最大前缀

[DATABASENAME].[SCHEMANAME].[表/过程/函数/视图...]
所以
select [DB1.new].dbo.getDeptNameByName('')
是正确的。

不跨DataBase就没必要加完整前缀,
直接select dbo.getDeptNameByName('')

‘叁’ 对象 名称 '161.135.129.108.s116133.dbo.mem_rePwd' 包含的前缀超出了最大限值。

你把服务器ip地址和数据库名都写进存储过程了,真有你的。
一般是先建立连接,在连接串中包含ip地址和数据库名的。
在连接串中指定ip和数据库名,不管是本地和外地都是一样操作的啦。

‘肆’ 包含的前缀数目超过了最大值。最大值为 2

truncate和update 不能加连接名,可以用如下方法:
sql server 2005版本支持 rpc,即远程exec
方法是:
exec ('某个字符串') at 连接名

比方说
exec('truncate table 库名.dbo.表名') at 连接名
update方法类似

此外,select如果用你原来的写法
select a,b,count(1) from 连接名.数据库名.dbo.表名 group by a,b
实际上是把整个表取过来做group,这样效率非常低
exec('select a,b,count(1) from 数据库名.dbo.表名 group by a,b
') at 连接名
这样是把脚本丢给那个服务器运算,仅把结果取回来,这样才是真正的分布式查询

但是必须将该连接数据库设置rpc权限(可能会增加风险)
在连接数据库-〉属性-〉服务器选项 中间可以设置,或者用脚本:

EXEC master.dbo.sp_serveroption @server=N'连接名', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'连接名', @optname=N'rpc out', @optvalue=N'true'

上述两个是其中一个有效,但我记不得是哪个了,你可以试试

‘伍’ SQL的语句最大长度限制多少字符

MSSQL SQL语句的最大长度是有限度的,对于varchar类型最多可以有8000个字符(varchar如果含中文字符,则一个中文字符要占两位),nvarchar类型最多可以接受4000个字符,超出限制长度的部分会被截掉,语句可能因此变得不完整而无法执行。