sql2008tempdb
⑴ sql server2008 里的tempdb的collation name 是korean_wansuang_ci_as 如何修改為chinese_prc_ci_as
tempdb的排序規則跟安裝SQL Server的時候指定的排序規則是相同的,想要修改tempdb的排序規則,必須修改資料庫實例的默認排序規則,這個比較麻煩,還不如重裝,並指定排序規則。
如果是因為查詢過程中排序規則與其它庫不一樣導致查詢失敗,可以使用collate關鍵字指定排序規則。
比如臨時表#temp是屬於tempdb的,該臨時表包含varchar類型列a,其他用戶庫表temp,包含varchar類型列b,直接進行比較會出錯
WHERE #temp.a=temp.b
但是使用collate關鍵字就可以避免
WHERE #temp.a COLLATE chinese_prc_ci_as=temp.b
⑵ sql server 2008的tempdb在不重裝的情況下如何移到其他盤上
先分離 tempdb 資料庫, 復制tempdb的文件(資料庫文件和日誌文件)到其他盤 然後附加tempdb資料庫。可能會遇到許可權問題;修改 tempdb 所在目錄的訪問許可權
⑶ 如何修改SQL 2008的數據文件目錄
use
master;
go
alter
database
master
modify
file
(name
=
master,filename='J:\data\master.mdf');
go
alter
database
master
modify
file
(name
=
mastlog,filename='J:\data\mastlog.ldf');
go
alter
database
tempdb
modify
file
(name
=
tempdev,filename='J:\data\tempdb.mdf');
go
alter
database
tempdb
modify
file
(name
=
templog,filename='J:\data\templog.ldf');
go
alter
database
msdb
modify
file
(name
=
msdbData,filename='J:\data\MSDBData.mdf');
go
alter
database
msdb
modify
file
(name
=
MSDBlog,filename='J:\data\MSDBLog.ldf');
go
alter
database
model
modify
file
(name
=
modeldev,filename='J:\data\model.mdf');
go
alter
database
model
modify
file
(name
=
modellog,filename='J:\data\modellog.ldf');
go
msdb、model、tempdb都可以移到我定義的目錄,資料庫可以啟動,起來以後到資料庫屬性-文件看到的路徑就是修改後的路徑。但是master的語句也執行成功了,執行結果如下:
文件
'master'
在系統目錄中已修改。新路徑將在資料庫下次啟動時使用。
文件
'mastlog'
在系統目錄中已修改。新路徑將在資料庫下次啟動時使用。
但是將master的2個文件移動到j:\data目錄下,資料庫啟動失敗,從日誌看,還是找原來的啟動路徑。
⑷ 如何不重啟服務、收縮sql server2008 tempdb資料庫
tempdb是你想變多大就變多大的么?
建議您參考閱讀一下MSDN對tempdb資料庫的解釋:
http://msdn.microsoft.com/zh-cn/library/ms190768.aspx
⑸ SQL Server 2008安裝程序創建4個系統資料庫
master
tempdb
model
msdb
在實例中默認顯示為4個,有一個是隱藏的Resource記錄系統表信息
系統資料庫 說明
master 資料庫 記錄 SQL Server 實例的所有系統級信息。
msdb 資料庫 用於 SQL Server 代理計劃警報和作業。
model 資料庫 用作 SQL Server 實例上創建的所有資料庫的模板。對 model
資料庫進行的修改(如資料庫大小、排序規則、恢復模式和其他資料庫選項)將應用於以後創建的所有資料庫。
Resource 資料庫 一個只讀資料庫,包含 SQL Server 包括的系統對象。系統對象在物理上保留在 Resource 資料庫中,但在邏輯上顯示在每個資料庫的
sys 架構中。
tempdb 資料庫 一個工作空間,用於保存臨時對象或中間結果集。
⑹ sql server 2008r2的tempdb很大怎麼辦
TEMPDB存放顯式創建的臨時對象,如表,存儲過程,表變數和游標,以及所有版本的已更新記錄(如果啟用了快照隔離)或所用的隱式基於快照隔離的功能.
你的資料庫用戶多,查詢量很大.當然TEMPDB會很大咯.如果可以的話,把SQL SERVER的TEMPDB單獨放到一個高速磁碟上,TEMPDB的初始大小根據資料庫查詢和使用量來確定,建議你直接設定為10G.
當然,你也要看看那些查詢語句,使用了臨時表要記得DROP,如果很大的查詢臨時結果.譬如SQL SERVER的執行計劃里有TABLE SPOOL,可以做成臨時表,在使用完之後再刪除.
⑺ sql2008資料庫報錯3417怎麼處理
當發現資料庫不能連接時,我們第一反應是去檢查資料庫的服務。發現sql server(SQLexpress)服務未啟動,當我們去啟動服務時無法啟動,錯誤代碼為errorcode 3417 。
⑻ sql server 2008資料庫有哪些表
在安裝了sql
server
2008的系統共中將創建4個可見系統資料庫:master、model、msdb、tempdb
master資料庫
master資料庫是sql
server中最重要的資料庫,它是sql
server的核心資料庫,如果該資料庫被損壞,sql
server將無法正常工作,master資料庫中包含所有的登錄名或用戶id所屬的較角色、伺服器中的資料庫的名稱及相關的信息、資料庫的位置、sql
server如何初始化四個方面的重要信息。
model資料庫
用戶創建資料庫時是以一套預定義的標准為模型。例如,若希望所有的資料庫都有確定的初始大小,或者都有特定的信息集,那麼可以吧這些信息放在model資料庫中,以model資料庫作為其他資料庫的模板資料庫。如果想要使用所有的資料庫都有一個特定的表,可以把該表放在model資料庫里。
model資料庫是tempdb資料庫的基礎。對model資料庫的任何改動都將反映在tempdb資料庫中,所以,在決定對model資料庫有所改變時,必須預先考慮好
msdb資料庫
msdb資料庫給sql
server代理提供必要的信息來運行作業,因而它是
sql
server中另一個十分重要的資料庫。
tempdb資料庫
tempdb資料庫用作系統的臨時存儲空間,其主要作用是存儲用戶建立的臨時表和臨時存儲過程,存儲用戶說明的全局變數值,為數據排序創建臨時表,存儲用戶利用游標說明所篩選出來的數據。
⑼ SQL server2008 臨時表tempdb如何自動釋放存儲空間
sql server中如何創建,使用,釋放臨時表
drop table #Tmp --刪除臨時表#Tmpcreate table #Tmp --創建臨時表#Tmp( ID int IDENTITY (1,1) not null, --創建列ID,並且每次新增一條記錄就會加1 WokNo varchar(50), primary key (ID) --定義ID為臨時表#Tmp的主鍵 );Select * from #Tmp --查詢臨時表的數據truncate table #Tmp --清空臨時表的所有數據和約束
相關例子:
Declare @Wokno Varchar(500) --用來記錄職工號Declare @Str NVarchar(4000) --用來存放查詢語句Declare @Count int --求出總記錄數 Declare @i intSet @i = 0 Select @Count = Count(Distinct(Wokno)) from #TmpWhile @i < @Count Begin Set @Str = 'Select top 1 @Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(@i) + 'id from #Tmp)' Exec Sp_ExecuteSql @Str,N'@WokNo Varchar(500) OutPut',@WokNo Output Select @WokNo,@i --一行一行把職工號顯示出來 Set @i = @i + 1 End臨時表可以創建本地和全局臨時表。本地臨時表僅在當前會話中可見;全局臨時表在所有會話中都可見。
本地臨時表的名稱前面有一個編號符 (#table_name),而全局臨時表的名稱前面有兩個編號符 (##table_name)。
SQL 語句使用 CREATE TABLE 語句中為 table_name 指定的名稱引用臨時表:
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)INSERT INTO #MyTempTable VALUES (1)
如果本地臨時表由存儲過程創建或由多個用戶同時執行的應用程序創建,則 SQL Server 必須能夠區分由不同用戶創建的表。為此,SQL Server 在內部為每個本地臨時表的表名追加一個數字後綴。存儲在 tempdb 資料庫的 sysobjects 表中的臨時表,其全名由 CREATE TABLE 語句中指定的表名和系統生成的數字後綴組成。為了允許追加後綴,為本地臨時表指定的表名 table_name 不能超過 116 個字元。
除非使用 DROP TABLE 語句顯式除去臨時表,否則臨時表將在退出其作用域時由系統自動除去:
當存儲過程完成時,將自動除去在存儲過程中創建的本地臨時表。由創建表的存儲過程執行的所有嵌套存儲過程都可以引用此表。但調用創建此表的存儲過程的進程無法引用此表。
所有其它本地臨時表在當前會話結束時自動除去。
全局臨時表在創建此表的會話結束且其它任務停止對其引用時自動除去。任務與表之間的關聯只在單個 Transact-SQL 語句的生存周期內保持。換言之,當創建全局臨時表的會話結束時,最後一條引用此表的 Transact-SQL 語句完成後,將自動除去此表。 在存儲過程或觸發器中創建的本地臨時表與在調用存儲過程或觸發器之前創建的同名臨時表不同。如果查詢引用臨時表,而同時有兩個同名的臨時表,則不定義針對哪個表解析該查詢。嵌套存儲過程同樣可以創建與調用它的存儲過程所創建的臨時表同名的臨時表。嵌套存儲過程中對表名的所有引用都被解釋為是針對該嵌套過程所創建的表,例如:
CREATE PROCEDURE Test2ASCREATE TABLE #t(x INT PRIMARY KEY)INSERT INTO #t VALUES (2)SELECT Test2Col = x FROM #tGOCREATE PROCEDURE Test1ASCREATE TABLE #t(x INT PRIMARY KEY)INSERT INTO #t VALUES (1)SELECT Test1Col = x FROM #tEXEC Test2GOCREATE TABLE #t(x INT PRIMARY KEY)INSERT INTO #t VALUES (99)GOEXEC Test1GO
下面是結果集:
(1 row(s) affected)
Test1Col ----------- 1
(1 row(s) affected)
Test2Col ----------- 2
當創建本地或全局臨時表時,CREATE TABLE 語法支持除 FOREIGN KEY 約束以外的其它所有約束定義。如果在臨時表中指定 FOREIGN KEY 約束,該語句將返回警告信息,指出此約束已被忽略,表仍會創建,但不具有 FOREIGN KEY 約束。在 FOREIGN KEY 約束中不能引用臨時表。
考慮使用表變數而不使用臨時表。當需要在臨時表上顯式地創建索引時,或多個存儲過程或函數需要使用表值時,臨時表很有用。通常,表變數提供更有效的查詢處理。