--測試將停用外部索引鍵,並建立一個在父資料表未有的 RT_UID 資料
ALTER TABLE DBO.MY_CHILD_TABLE NOCHECK CONSTRAINT FK_MY_CHILD_TABLE_MY_ROOT_TABLE
--測試將停用外部索引鍵,並建立一個在父資料表未有的 RT_UID 資料
ALTER TABLE DBO.MY_CHILD_TABLE NOCHECK CONSTRAINT FK_MY_CHILD_TABLE_MY_ROOT_TABLE
交易式複寫是 Microsoft® SQL Server™ 2000 所提供的一種複寫類型,可用來在分散式環境中的伺服器之間以增量的方式傳播資料修改。
交易式複寫可用於許多不同的應用模式,從報告伺服器和資料倉儲環境,到 Web 伺服器和電子商務應用程式,都在應用的範圍內。在網際網路上,有許多執行 SQL Server 的重要網站都是使用交易式複寫,包括 MSN.com、Passport.com、BarnesandNoble.com 和 Buy.com。
交易式複寫是既可調整又可靠的方案,可在高效能的環境中散發資料。本文會檢視交易式複寫中的效能,並示範幾種可改進應用程式效能的方式。本文是以使用不同硬體組態和複寫環境所做的測試結果作為基礎,並根據測試結果提供幾方面的建議,例如套用初始快照集、最佳化複寫設定和複寫延展性 (Scalability)。
完整備份
- 同時會備份 資料檔 ( *.mdf ) 與 交易記錄檔 ( *.ldf )
- 要做任何差異備份或交易記錄備份之前,一定要做一次完整備份
差異備份
- 只會備份 資料檔 ( *.mdf ),但僅有最近一次完整備份到備份當下這段時間所異動的資料
- 差異備份不會備份任何交易記錄檔,備份的內容只會拿目前資料檔與最近一次完整備份的資料內容做差異比對
交易記錄檔備份
- 只會備份 交易記錄檔 ( *.ldf )
- 若透過 SSMS 操作,在預設的情況下會自動截斷交易記錄
- 交易記錄備份的 紀錄序號 (LSN) 是從資料庫建立開始就一直連貫的
- ON DELETE CASCADE
指定若有人嘗試刪除包含了索引鍵的資料列,而該索引鍵又被其他資料表的現有資料列中的外部索引鍵所參考時,包含這些外部索引鍵的所有資料列也會被刪除。
交叉連接為兩個資料表間的笛卡兒乘積 (Cartesian product),兩個資料表在結合時,不指定任何條件,即將兩個資料表中所有的可能排列組合出來,以下例而言 CROSS JOIN 出來的結果資料列數為 3×5=15 筆,因此,當有WHERE、ON、USING條件時不建議使用。
CROSS JOIN 語法 (SQL CROSS JOIN Syntax)
SELECT table_column1, table_column2···或
FROM table_name1
CROSS JOIN table_name2;SELECT table_column1, table_column2···
FROM table_name1, table_name2;
- char [ ( n ) ]
這些是長度為 n 位元組的固定長度非 Unicode 字元資料。n 必須是 1 到 8,000 的值。儲存體大小是 n 位元組。char 的 ISO 同義字是 character。
- varchar [ ( n | max ) ]
可變長度,非 Unicode 字元資料。n 可以是 1 到 8,000 的值。max 表示最大儲存體大小是 2^31-1 位元組。儲存體大小是輸入資料的實際長度再加上 2 位元組。輸入的資料長度可以是 0 字元。varchar 的 ISO 同義字是 char varying 或 character varying。
A. 建立資料庫使用者
下列範例會先建立一個具有密碼且名叫 AbolrousHazem 的伺服器登入,然後在 AdventureWorks2008R2 建立一個對應的資料庫使用者 AbolrousHazem。
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
What is the SQL DROP VIEW Statement?
The SQL DROP VIEW statement is the SQL command that removes an entire SQL view.
假設 Product 資料表和 ProductReview 資料表以它們的 ProductID 資料行進行聯結。結果只會顯示出已撰寫評論的產品。
若想納入所有的產品,而不管是否已撰寫了評論,可使用 ISO 左外部聯結。以下為此查詢:
USE AdventureWorks2008R2;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID
非叢集索引可在具有叢集索引的資料表或檢視中、或是堆積中定義。非叢集索引中的每個索引資料列都含有非叢集鍵值與資料列定位器。此定位器指向含有鍵值之叢集索引或堆積中的資料列。索引中的資料列會依據索引鍵值的順序儲存,但除非叢集索引建立在資料表中,否則資料列不一定會依循任何特定的順序排列
UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "Jan-08-1999"
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
外部索引鍵 --- 在某資料表中的外部索引鍵(foreign key #)必須是另一資料表的主索引鍵,以建立此兩個資料表的關係。 外部索引鍵的值不一定是要唯一的,此點與主索引鍵不同。 兩個外部索引鍵也可以組合而成為另一資料表的主索引鍵,例如: 「成績資料表」之「學號」與「課號」兩個外部索引鍵合而為一個主索引鍵。
定義主索引鍵,強制使用輸入到指定不允許 null 值的資料行值的唯一性。如果您定義資料庫中資料表的主索引鍵,可以將該資料表與其他資料表關聯,這樣可以減低重複資料的需求。資料表只能有一個主索引鍵。
SQL Server:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
在 SQL Server 中使用預存程序管理權限 (ADO.NET)
更新: November 2007
為資料庫建立多重防線的方法之一,就是使用預存程序 (Stored Procedure) 或使用者定義的函式來實作所有資料存取。您可以撤銷或拒絕基礎物件 (例如資料表) 的所有權限,然後在預存程序上授與 EXECUTE 權限。如此即可有效地在資料和資料庫物件周圍建立安全性防線。