我們在進行項目開發中,經常會遇到多條件模糊查詢的需求。對此,我們常見的解決方案有兩種:一是在程式端拼接SQL字串,根據是否選擇了某個條件,構造相應的SQL字串;二是在資料庫的預存程序中使用動態SQL語句。其本質也是拼接SQL字串,不過是從程式端轉移到資料庫端而已。這兩種方式的缺點是顯而易見的:一是當多個條件每個都可為空白時,要使用多個if語句進行判斷;二是拼接的SQL語句容易產生SQL注入漏洞。最近寫資料庫預存程序的時候經常使用case when
無意中看到朋友寫的一篇文章“將表裡的資料批量產生INSERT語句的預存程序的實現”。我仔細看文中的兩個儲存代碼,自我感覺兩個都不太滿意,都是產生的單行模式的插入,資料行稍微大些效能會受影響的。所在公司本來就存在第二個版本的類似實現,但是是基於多行模式的,還是需要手工添加UNAION ALL來滿足多行模式的插入。看到這篇博文和基於公司資料行批量指令碼的儲存的缺點,這次改寫和增強該儲存的功能。 本儲存運行於SQL Server 2005或以上版本,T-SQL代碼如下: IF
鎖定資料庫的一個表複製代碼 代碼如下: SELECT * FROM table WITH (HOLDLOCK)注意: 鎖定資料庫的一個表的區別複製代碼 代碼如下:SELECT * FROM table WITH (HOLDLOCK)其他事務可以讀取表,但不能更新刪除複製代碼 代碼如下:SELECT * FROM table WITH (TABLOCKX)其他事務不能讀取表,更新和刪除SELECT 語句中“加鎖選項”的功能說明SQL
在使用 SQL Server 的過程中,使用者遇到的最多的問題莫過於串連失敗了。一般而言,有以下兩種串連 SQL Server 的方式,一是利用 SQL Server 內建的用戶端工具,如企業管理器、查詢分析器、事務探查器等;二是利用使用者自己開發的用戶端程式,如ASP 指令碼、VB程式等,用戶端程式中又是利用 ODBC 或者 OLE DB 等串連
在建立SQL Server 2000 容錯移轉叢集之前,必須配置 Microsoft 叢集服務 (MSCS) 並使用 Microsoft Windows NT4.0 或 Windows 2000 中的群集管理員建立至少一個叢集磁碟資源。在運行 SQL Server 安裝程式之前,在群集管理員中記下群集磁碟機的位置,因為建立新的容
顯示某個Sql Server某個資料庫中所有表或視圖的資訊 sql server 2000 與 2005 不同 差別在於 紅色字部分以下語句為擷取所有表資訊,替換綠色黑體字"U"為"V"為擷取所有視圖資訊。Sql Server 2000 版本SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS COLUMN_NAME,systypes.name AS DATA_TYPE,