首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料庫開發十大常見問題解答 (3/3)

     編輯:關於SqlServer

Q5: SQL Server 2005 併發問題解決

場景:售票系統檢查剩餘座位後插入,兩程序同時讀到相同剩餘數導致超賣。
方案:
1. 給每座位唯一識別碼,建立已預訂座位表加 UNIQUE 約束,資料庫層面防重複。
2. 使用 Service Broker:每車次建一會話,座位以訊息入佇列,消費者 RECEIVE 取得座位,Broker 保證訊息僅被消費一次,徹底解決併發。

Q6: SQL Server 2005 取代查詢分析器的工具

SQL Server Management Studio (SSMS):整合查詢分析器與企業管理器,介面升級、功能增強,多數 DBA 評價極佳。

Q7: SQL vs T-SQL 差異

SQL 為 ANSI/ISO 標準。T-SQL 為 SQL Server 實作,基於 SQL-92 微調 SQL-99,含 Microsoft 專有擴充。標準與 T-SQL 差異極多。在 SQL Server 上工作建議善用專有擴充以發揮完整功能。可用 SET FIPS_FLAGGER 檢查標準相容性。

Q8: SQL Server 2005 新索引類型?

關聯表無新索引類型(仍為 B-tree 叢集/非叢集)。但有增強:
• 全文檢索索引重寫。
• XML 資料型別支援 XQuery 與 XML 索引。
• 線上索引操作:ONLINE = ON 允許不鎖定表執行索引維護,結束半夜維護窗口時代。

Q9: 依複合鍵取最新日期列腳本

SELECT t.prod_key, t.item_key, t.pack_key, t.last_sale
FROM (
    SELECT item_key, pack_key, MAX(last_sale) AS last_sale
    FROM tablex GROUP BY item_key, pack_key
) m
JOIN tablex t ON t.item_key = m.item_key AND t.pack_key = m.pack_key AND t.last_sale = m.last_sale;

Q10: 列出無資料列的表

動態 SQL 從 sysobjects 取表名,配合 sysindexes.rowcnt 篩選 rowcnt = 0,結果存入暫存表輸出:

DECLARE @sql VARCHAR(256);
CREATE TABLE #emptytables (tablename VARCHAR(128), table_rowcount INT);
SELECT @sql = 'SELECT DISTINCT o.name, x.rowcnt FROM sysobjects o
  INNER JOIN sysindexes x ON o.id = x.id
  WHERE x.rowcnt = 0 AND o.type = ''U''';
INSERT #emptytables EXEC(@sql);
SELECT * FROM #emptytables;
DROP TABLE #emptytables;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved