当前位置:首页 » 编程语言 » sql转储时无法存储查询
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql转储时无法存储查询

发布时间: 2022-10-15 09:05:45

A. sql无法保存了,

工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧) 把钩去掉即可。

B. 我想把sql语句保存到sqlserver2005中,但是有的sql语句不能保存,是不是需要转换格式,要转换成什么格式

是这样的,因为在你的sql语句中会有特殊符号,如单引号,逗号等,这些是不能通过sql语句直接存储的。
解决方案1:将你需要存储的sql语句中的标点符号都使用 中文 标点,这样就可以存储。
解决方案2:如果是西文标点,你就需要对标点符号进行编码存储。不然就会出错。
分析:如你要存储 yes,i can.那么存储语句应该是:
insert into tablename values('yes,ican');
就会提示出错,因为 逗号 将语句隔开了,数据库会认为你插入的是两个字段:
yes和i can,但是如果是yes和i can,那么语句应该是:values('yes','i can');
结论:所以按以上方法肯定不能存储。而在Server命名空间里面有这样一组方法:
HTMLEncode() 和 HTMLDecode() 分别是对这些特殊文本进行编解码的。
所以你在存储“yes,i can” 的时候,对它进行一次“编码”,
string bianma = HTMLEncode(); (HTMLEncode的返回值是什么你自己查下文档)
然后就可以拿bianma来存入数据库即可。
当然在你取出数据之后,就需要对该数据进行解码操作。HTMLDecode();

分析结束,我曾经也在项目过程中遇到过这样的问题,希望能够帮到你。

C. MSSQL中遇到存储过程加密出错不能查看

存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)

--*/

/*--调用示例:

--解密指定存储过程
exec sp_decrypt '存储过程名'

--*/

create PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin
begin tran
declare @objectname1 varchar(100),@orgvarbin varbinary(8000)
declare @sql1 nvarchar(4000),@sql2 nvarchar(4000),@sql3 nvarchar(4000),@sql4 nvarchar(4000),@sql5 nvarchar(4000),@sql6 nvarchar(4000),@sql7 nvarchar(4000),@sql8 nvarchar(4000),@sql9 nvarchar(4000),@sql10 nvarchar(4000)
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declare @i int,@status int,@type varchar(10),@parentid int
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)

create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)
select @number=max(number) from #temp
set @k=0

while @k<=@number
begin
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
if @type='P'
set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '
end)

if @type='TR'
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '

if @type='FN' or @type='TF' or @type='IF'
set @sql1=(case @type when 'TF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)

if @type='V'
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 '

set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
select @sql2=REPLICATE('-',4000),@sql3=REPLICATE('-',4000),@sql4=REPLICATE('-',4000),@sql5=REPLICATE('-',4000),@sql6=REPLICATE('-',4000),@sql7=REPLICATE('-',4000),@sql8=REPLICATE('-',4000),@sql9=REPLICATE('-',4000),@sql10=REPLICATE('-',4000)
exec(@sql1+@sql2+@sql3+@sql4+@sql5+@sql6+@sql7+@sql8+@sql9+@sql10)
end
set @k=@k+1
end

set @k=0
while @k<=@number
begin

if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
select @colid=max(colid) from #temp where number=@k
set @n=1

while @n<=@colid
begin
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k

SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k)
if @n=1
begin
if @type='P'
SET @OrigSpText2=(case when @number>1 then 'CREATE PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'CREATE PROCEDURE '+ @objectName +' WITH ENCRYPTION AS '
end)

if @type='FN' or @type='TF' or @type='IF'--刚才有错改一下
SET @OrigSpText2=(case @type when 'TF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)

if @type='TR'
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '

if @type='V'
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 '

set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
begin
SET @OrigSpText2=REPLICATE('-', 4000)
end
--start counter
SET @i=1
--fill temporary variable

SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))

--loop
WHILE @i<=datalength(@OrigSpText1)/2
BEGIN

SET @resultsp = stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^
(UNICODE(substring(@OrigSpText2, @i, 1)) ^
UNICODE(substring(@OrigSpText3, @i, 1)))))
SET @i=@i+1
END
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))
set @resultsp=(case when @encrypted=1
then @resultsp
else convert(nvarchar(4000),case when @status&2=2 then uncompress(@orgvarbin) else @orgvarbin end)
end)
print @resultsp
--execute( @resultsp)
set @n=@n+1

end

end
set @k=@k+1
end

drop table #temp
rollback tran
end
GO

D. SQL 存储过程问题

没怎么看懂

E. 在SQL查询中能查询到IP(@IP_Address),为什么放到存储过程就查不出来了跪求高手指点

查不出来有什么报错提示吧,是权限不足还是语法错误?你就这么提问的多高的高手才能猜到原因 - -!

F. sql server 存储过程 表变量名无法用在查询字符串中

要注意一点:用execute执行的动态SQL中是无法直接使用外部所定义的变量的(就好像执行动态SQL内与外是两个不同的会话。用存储过程sp_executesql倒是可以传递其他标量类型的参数,但是也无法传递表变量)。而你要实现的功能是在执行动态SQL之前,已经把数据查询到一个表变量中了,然后要在动态SQL中再查询此表变量,目前来说是不能实现的。

可以使用临时表,或者游标,这两个可以在动态SQL中保持有效状态。

使用游标的示例如下:

declare@tbtable(usernamenvarchar(20))
insertinto@tb
select'Andy'
union
select'Jack'
declarecurcursorfor
selecttop10usernamefrom@tb
declare@sqlnvarchar(1000),@usernamenvarchar(20)
set@sql='opencur
fetchnextfromcur
into@v_user_name'
executesp_executesql@sql,N'@v_user_namenvarchar(20)output',@usernameout
closecur
deallocatecur
select@username

而对于你的要在动态SQL中执行select语句,直接使用临时表会比较方便些。

G. 网站后台提交数据,显示提交成功,sql数据库无法存储信息

先从源代码,看是否update的语句有问题,
在看看数据库表是否有问题

可以输出添加或修改的sql语句,然后到管理器中执行看看是否成功

还可以看看数据库连接账户的权限,是否赋予了更新数据的权限

H. SQL SERVER 存储过程查询不出数据,而SELECT语句可以

存储过程的代码这样改一下就可以了
create procere b_category;1
(@category varchar(50)=null)
as
begin
EXEC('select * from book where bno in (select bno from book_category where cname like ‘’‘ + @category + ’%‘’')‘)
end

I. SQL SERVER 存储过程中在使用查询的时候提示错误

set @T_CityName = select CityName from T_basic_City where CityName = @In_SenderCity IF(@T_CityName = @In_SenderCity)
换成
select @T_CityName = CityName from T_basic_City where CityName = @In_SenderCity
试试

J. sql2012 存储过程 无法保存到数据库只能另存为sql文件

首先楼主的问题“无法保存到数据库”,一般我们说创建存储过程到数据库,而不是说保存到数据库,因为没有保存这个动作可以执行,只有创建。创建完存储过程以后,你可以在数据库中查看、修改刚才创建的存储过程。好吧,就说这么多了,感谢楼主给我增添了一份快乐。