Time of Update: 2018-12-08
首先說明一下SQL Server記憶體佔用由哪幾部分組成。SQL Server佔用的記憶體主要由三部分組成:資料緩衝(Data Buffer)、執行緩衝(Procedure Cache)、以及SQL Server引擎程式。SQL Server引擎程式所佔用緩衝一般相對變化不大,則我們進行記憶體調優的主要著眼點在資料緩衝和執行緩衝的控制上。本文主要介紹一下執行緩衝的調優。資料緩衝的調優將在另外的文章中介紹。 對於減少執行緩衝的佔用,主要可以通過使用參數化查詢減少記憶體佔用。
Time of Update: 2018-12-08
什麼是索引 拿漢語字典的目錄頁(索引)打比方:正如漢語字典中的漢字按頁存放一樣,SQL Server中的資料記錄也是按頁存放的,每頁容量一般為4K。為了加快尋找的速度,漢語字(詞)典一般都有按拼音、筆畫、偏旁部首等排序的目錄(索引),我們可以選擇按拼音或筆畫尋找方式,快速尋找到需要的字(詞)。 同理,SQL Server允許使用者在表中建立索引,指定按某列預先排序,從而大大提高查詢速度。 • SQL Server中的資料也是按頁(4KB)存放 • 索引:是SQL Server編排資料的內部方法。
Time of Update: 2018-12-08
在Transact-SQL語句中,我們主要使用OpenDataSource函數、OPENROWSET 函數,關於函數的詳細說明,請參考SQL線上說明。利用下述方法,可以十分容易地實現SQL SERVER、ACCESS、EXCEL資料轉換,詳細說明如下: 一、SQL SERVER 和ACCESS的資料匯入匯出 常規的資料匯入匯出: 使用DTS嚮導遷移你的Access資料到SQL Server,你可以使用這些步驟: 1在SQL SERVER企業管理器中的Tools(工具)菜單上,選擇Data
Time of Update: 2018-12-08
鎖定資料庫的一個表 SELECT * FROM table WITH (HOLDLOCK) 注意: 鎖定資料庫的一個表的區別 SELECT * FROM table WITH (HOLDLOCK) 其他事務可以讀取表,但不能更新刪除 SELECT * FROM table WITH (TABLOCKX) 其他事務不能讀取表,更新和刪除 SELECT 語句中“加鎖選項”的功能說明 SQL Server提供了強大而完備的鎖機制來協助實現資料庫系統的並發性和高效能。使用者既能使用SQL
Time of Update: 2018-12-08
無論使用int還是varchar,對於Status的多選查詢都是不易應對的。舉例,常規思維下對CustomerStatus的Enum設定如下: 複製代碼 代碼如下:[Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, Suspended = 3, Closing = 4, Closed = 5 } 在資料庫中以int形式儲存了Status值。
Time of Update: 2018-12-08
複製代碼 代碼如下:CREATE TABLE [dbo].[TbGuidTable]( [TableName] [varchar](50) NOT NULL, [KeyName] [varchar](20) NOT NULL, [KeyValue] [varchar](100) NOT NULL ) ON [PRIMARY] GO if exists (select * from dbo.sysobjects where id = object_id(N'PCreateGuid') and
Time of Update: 2018-12-08
SQL SERVER資料存放區的形式 在談到幾種不同的讀取方式之前,首先要理解SQL SERVER資料存放區的方式.SQL SERVER儲存的最小單位為頁(Page).每一頁大小為8k,SQL SERVER對於頁的讀取是原子性,要麼讀完一頁,要麼完全不讀,不會有中間狀態。而頁之間的資料群組織結構為B樹(請參考我之前的博文).所以SQL SERVER對於邏輯讀,預讀,和物理讀的單位是頁. SQL SERVER一頁的總大小為:8K 但是這一頁儲存的資料會是:
Time of Update: 2018-12-08
代碼如下所示:表landundertake結構如下所示:表appraiser結構如下所示:access代碼:複製代碼 代碼如下:TRANSFORM First(Landundertake.valuerId) AS valuerId之First SELECT Appraiser.quarterId, Landundertake.landCode FROM Landundertake INNER JOIN Appraiser ON (Landundertake .valuerId =
Time of Update: 2018-12-08
方法1: 複製代碼 代碼如下:truncate table TableName 刪除表中的所有的資料的同時,將自動成長清零。 如果有外鍵參考這個表,這個方法會報錯(即便主鍵表和外鍵表都已經沒有資料),請參考方法2。 PS: 用delete刪除資料,自動成長不會清零的哦。 方法2: 複製代碼 代碼如下:DBCC CHECKIDENT('TableName', RESEED, 0) 不刪除表的資料,直接重設自動成長的值。
Time of Update: 2018-12-08
啟動sql server Net Start MSSqlServer 暫停sql server Net Pause MSSqlServer 重新啟動暫停sql server Net Continue MSSqlServer 停止sql server Net stop MSSqlServer 命令列方式修改sql server sa 的密碼 一直都是使用企業管理器操作sql的,昨天幫一朋友部署網站,租的國外vps主機,登陸上去只看到sql的表徵圖正常啟動並執行,企業管理器和查詢分析器的影都沒看到,
Time of Update: 2018-12-08
兩張表 組織架構表(Organise) 和 工資發放記錄表 (WagePerMonthHis) 兩張表通過 Organise.Item_id 和 WagePerMonthHis.OrgIdS 進行關聯 Organise表(以下簡稱O表)中大約有6000條記錄11個欄位 ,WagePerMonthHis(以下簡稱W表)計有 125萬條記錄 和 25個欄位 原程式中一段如下的語句 是查詢所有不在W表的組織架構層級為2的記錄 複製代碼 代碼如下:select OrgId as
Time of Update: 2018-12-08
一、出錯情況 有些時候當你重啟了資料庫服務,會發現有些資料庫變成了正在恢複、置疑、可疑等情況,這個時候DBA就會很緊張了,下面是一些在實踐中得到證明的方法。
Time of Update: 2018-12-08
在附加資料庫後查看不了資料庫圖表,也無法建立資料庫圖表 我的解決方案如下: 1、設定相容層級為90(2005為90)(2000為80) 複製代碼 代碼如下:USE [master] GO EXEC dbo.sp_dbcmptlevel @dbname='資料庫名', @new_cmptlevel=90 GO [這條命令執行完畢:報“DBCC 執行完畢。如果 DBCC
Time of Update: 2018-12-08
1,exists和in的理解(參考http://www.jb51.net/article/28922.htm) exists:如果子查詢中包括某一行,那麼就為TRUE in:如果運算元為TRUE等於運算式列表中的一個,那麼就為TRUE exists總是搞得不太明白 select 。。。from。。。where 。。。 where就相當於一個判斷條件,只有where後面的運算式運算結果為TRUE,前面的才能select出來
Time of Update: 2018-12-08
編號標準宗地編碼(landCode)所在區段編碼(sectCode)1131001BG001G0012131001BG002G0013131001BG003G0014131001BG004G0025131001BG005G003現在需要將表中的資料轉換為如下表所示結果:編號區段編碼包含的標準宗地1G001131001BG001,131001BG002,131001BG0032G002131001BG0043G003131001BG005在SQL
Time of Update: 2018-12-08
複製代碼 代碼如下:--執行順序 From Where Select select * from (select sal as salary,comm as commission from emp ) x where salary<5000 --得出 Name Work as a Job select ename +' Work as a'+job as msg from emp where deptno=10 --如果員工工資小於2000返回UnderPaid 大於等於4k
Time of Update: 2018-12-08
現將幾種主要情況進行小結: 一、如何輸入NULL值 如果不輸入null值,當時間為空白時,會預設寫入"1900-01-01",在業務處理時很麻煩。 ctrl+0即可輸入NULL值。 二、如何在sql語句中判斷為NULL的時間欄位 假設表為:TestTable SN DateTime1 DateTime2 1 2011-10-24 2011-10-25 2 NULL 2011-10-26 3 2011-10-25 NULL
Time of Update: 2018-12-08
SQL Server中新增加了XML.Modify()方法,分別為xml.modify(insert),xml.modify(delete),xml.modify(replace)對應XML的插入,刪除和修改操作。 本文以下面XML為例,對三種DML進行說明: 複製代碼 代碼如下:declare @XMLVar XML; SET @XMLVar= ' <catalog> <book category="ITPro"> <title>Windows Step
Time of Update: 2018-12-08
複製代碼 代碼如下:--建立測試表 DECLARE @Users TABLE ( ID INT IDENTITY(1,1), UserInfo XML ) ---插入測試資料 DECLARE @xml XML SET @xml=' <root> <user> <userid>1</userid> <userName>test1</userName> </user> </root>' INSERT
Time of Update: 2018-12-08
只是做筆記,沒什麼!! 複製代碼 代碼如下:--建立測試表 CREATE TABLE [dbo].[Student]( [ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY, [Name] [nvarchar](20) NOT NULL DEFAULT (''), [Age] [int] NOT NULL DEFAULT (0), [Sex] [bit] NOT NULL DEFAULT (0), [Address] [nvarchar](200) NOT