當前位置:首頁 » 編程語言 » 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文件

首先樓主的問題「無法保存到資料庫」,一般我們說創建存儲過程到資料庫,而不是說保存到資料庫,因為沒有保存這個動作可以執行,只有創建。創建完存儲過程以後,你可以在資料庫中查看、修改剛才創建的存儲過程。好吧,就說這么多了,感謝樓主給我增添了一份快樂。