怎么設(shè)置自動(dòng)備份數(shù)據(jù)庫(kù)?
對(duì)于數(shù)據(jù)庫(kù)的管理,最重要的是數(shù)據(jù)庫(kù)的頻繁備份。如果每天手動(dòng)備份,對(duì)管理員來(lái)說(shuō)會(huì)有點(diǎn)重。SQLS
sqlserver創(chuàng)建臨時(shí)表的使用說(shuō)明?
臨時(shí)表生成:A:selectinto和b:createtableinsertinto。
A比b快很多,但是A會(huì)鎖定tempdb的SYSOBJECTS、SYSINDEXES、SYSCOLUMNS表,在多用戶(hù)并發(fā)的情況下很容易阻塞其他進(jìn)程。
2.b用于并發(fā)系統(tǒng)。在大量的單語(yǔ)句中使用。
如何創(chuàng)建臨時(shí)表:
方法1:
Createtable#臨時(shí)表名(字段1約束、
字段2約束,
.....)
創(chuàng)建表##臨時(shí)表名(字段1約束、
字段2約束,
.....)
方法二:
從您的表中選擇*into#臨時(shí)表名。
Select*into#臨時(shí)表名來(lái)自你的表。
注:以上#代表局部臨時(shí)表,##代表全局臨時(shí)表。
查詢(xún)臨時(shí)表
Select*from#臨時(shí)表名
Select*from##臨時(shí)表名
刪除臨時(shí)表
刪除表#臨時(shí)表名
刪除表##臨時(shí)表名
SQLSERVER臨時(shí)表的使用
droptable#Tmp-Deletetemporarytable#TmpCreatetable#Tmp-Createtemporarytable#Tmp(IDintidentity(1,1)notnull,-CreatecolumnID,并且每次添加新記錄時(shí),1woknovarchar(50),primarykey(ID)-將ID定義為臨時(shí)表#Tmp的主鍵)Select*from。根據(jù)truncatetable#Tmp-清除臨時(shí)表的所有數(shù)據(jù)和約束。
相關(guān)示例:
Declare@woknovarchar(500)-用于記錄雇員號(hào)Declare@StrNVarchar(4000)-用于存儲(chǔ)查詢(xún)語(yǔ)句declare@countint-Find記錄總數(shù)Declare@IintSet@i0Select@CountCount(distinct(Wokno))from#TmpWhile@Ilt@CountBeginSet@StrSelecttop1@WoknoWoknofrom#TmpWhereidnotin(SelecttopStr(@I)idfrom#Tmp)ExecSp_executeSQL@Str,varchar(500)
工作單元表
您可以創(chuàng)建本地和全局臨時(shí)表。本地臨時(shí)表僅在當(dāng)前會(huì)話中可見(jiàn);全局臨時(shí)表在所有會(huì)話中都可見(jiàn)。
本地臨時(shí)表的名稱(chēng)前面有一個(gè)數(shù)字符號(hào)(#table_name),而全局臨時(shí)表的名稱(chēng)前面有兩個(gè)數(shù)字符號(hào)(#table_name)。
SQL語(yǔ)句使用CREATETABLE語(yǔ)句中為table_name指定的名稱(chēng)來(lái)引用臨時(shí)表:
創(chuàng)建表#MyTempTable(colaINT主鍵)
插入到#MyTempTable值(1)
如果本地臨時(shí)表是由存儲(chǔ)過(guò)程或由多個(gè)用戶(hù)同時(shí)執(zhí)行的應(yīng)用程序創(chuàng)建的,SQLServer必須能夠區(qū)分不同用戶(hù)創(chuàng)建的表。為此,SQLServer會(huì)在每個(gè)本地臨時(shí)表的表名后面附加一個(gè)數(shù)字后綴。存儲(chǔ)在tempdb數(shù)據(jù)庫(kù)的sysobjects表中的臨時(shí)表的全名由CREATETABLE語(yǔ)句中指定的表名和系統(tǒng)生成的數(shù)字后綴組成。為了允許后綴,為本地臨時(shí)表指定的表名table_name不能超過(guò)116個(gè)字符。
除非使用DROPTABLE語(yǔ)句顯式刪除臨時(shí)表,否則臨時(shí)表將在退出其作用域時(shí)被系統(tǒng)自動(dòng)刪除:
當(dāng)存儲(chǔ)過(guò)程完成時(shí),在存儲(chǔ)過(guò)程中創(chuàng)建的本地臨時(shí)表將被自動(dòng)刪除。由創(chuàng)建該表的存儲(chǔ)過(guò)程執(zhí)行。行的所有嵌套存儲(chǔ)過(guò)程都可以引用該表。但是,調(diào)用創(chuàng)建該表的存儲(chǔ)過(guò)程的進(jìn)程不能引用該表。
在當(dāng)前會(huì)話結(jié)束時(shí),所有其他本地臨時(shí)表都將被自動(dòng)刪除。
當(dāng)創(chuàng)建該表的會(huì)話結(jié)束并且其他任務(wù)停止引用該表時(shí),全局臨時(shí)表將被自動(dòng)刪除。任務(wù)和表之間的關(guān)聯(lián)僅在單個(gè)Transact-SQL語(yǔ)句的生命周期內(nèi)維護(hù)。換句話說(shuō),當(dāng)創(chuàng)建全局臨時(shí)表的會(huì)話結(jié)束時(shí),該表將在引用該表的最后一條Transact-SQL語(yǔ)句完成后自動(dòng)刪除。
在存儲(chǔ)過(guò)程或觸發(fā)器中創(chuàng)建的本地臨時(shí)表不同于在調(diào)用存儲(chǔ)過(guò)程或觸發(fā)器之前創(chuàng)建的同名臨時(shí)表。如果查詢(xún)引用了一個(gè)臨時(shí)表,并且有兩個(gè)臨時(shí)表具有相同的名稱(chēng),則沒(méi)有定義要對(duì)哪個(gè)表進(jìn)行查詢(xún)。嵌套存儲(chǔ)過(guò)程還可以創(chuàng)建與調(diào)用它的存儲(chǔ)過(guò)程所創(chuàng)建的臨時(shí)表同名的臨時(shí)表。嵌套存儲(chǔ)過(guò)程中對(duì)表名的所有引用都被解釋為為嵌套過(guò)程創(chuàng)建的表,例如:
創(chuàng)建過(guò)程Test2作為CREATETABLE#t(xINTPRIMARYKEY)INSERTINTO#tVALUES(2)SELECTTest2colxFROM#tGO創(chuàng)建過(guò)程Test1作為CREATETABLE#t(xINTPRIMARYKEY)INSERTINTO#tVALUES(1)SELECTTest1colxFROM#tEXECTest2GO創(chuàng)建TABLE#t(xINTPRIMARYKEY)INSERTINTO#tVALUES(99)GOEXECTest1GO
以下是結(jié)果集:
(1行受影響)
Test1Col
-
一個(gè)
(1行受影響)
Test2Col
-
2
創(chuàng)建本地或全局臨時(shí)表時(shí),CREATETABLE語(yǔ)法支持除外鍵約束之外的所有約束定義。如果在臨時(shí)表中指定了外鍵約束,該語(yǔ)句將返回一條警告消息,指出該約束已被忽略,并且仍將創(chuàng)建沒(méi)有外鍵約束的表。不能在外鍵約束中引用臨時(shí)表。
考慮使用表變量而不是臨時(shí)表。當(dāng)需要在臨時(shí)表上顯式創(chuàng)建索引時(shí),或者當(dāng)多個(gè)存儲(chǔ)過(guò)程或函數(shù)需要使用表值時(shí),臨時(shí)表非常有用。通常,表變量提供更有效的查詢(xún)處理。