顯示具有 SQL Server 2008 標籤的文章。 顯示所有文章
顯示具有 SQL Server 2008 標籤的文章。 顯示所有文章

2020年4月30日 星期四

SQL Server support lifecycle 技術支援 產品週期

SQL Server support lifecycle 技術支援 產品週期


Products Released Lifecycle Start Date Mainstream Support End Date Extended Support End Date Service Pack Support End Date
SQL Server 2000 Service Pack 4 5/6/2005 4/8/2008 4/9/2013
SQL Server 2005 1/14/2006 Not Applicable Not Applicable 7/10/2007
SQL Server 2005 Service Pack 4 12/13/2010 4/12/2011 4/12/2016
SQL Server 2008 11/7/2008 Not Applicable Not Applicable 4/13/2010
SQL Server 2008 Service Pack 1 3/31/2009 Not Applicable Not Applicable 10/11/2011
SQL Server 2008 Service Pack 2 9/24/2010 Not Applicable Not Applicable 10/9/2012
SQL Server 2008 Service Pack 3 10/6/2011 Not Applicable Not Applicable 10/13/2015
SQL Server 2008 Service Pack 4 7/7/2014 7/8/2014 7/9/2019
SQL Server 2008 R2 7/20/2010 Not Applicable Not Applicable 7/10/2012
SQL Server 2008 R2 Service Pack 1 7/12/2011 Not Applicable Not Applicable 10/8/2013
SQL Server 2008 R2 Service Pack 2 7/26/2012 Not Applicable Not Applicable 10/13/2015
SQL Server 2008 R2 Service Pack 3 Review Note 7/8/2014 7/9/2019
SQL Server 2012 5/20/2012 Not Applicable Not Applicable 1/14/2014
SQL Server 2012 Service Pack 1 11/7/2012 Not Applicable Not Applicable 7/14/2015
SQL Server 2012 Service Pack 2 6/10/2014 Not Applicable Not Applicable 1/10/2017
SQL Server 2012 Service Pack 3 12/1/2015 Not Applicable Not Applicable 10/9/2018
SQL Server 2012 Service Pack 4 Review Note 7/11/2017 7/12/2022
SQL Server 2014 6/5/2014 Not Applicable Not Applicable 7/12/2016
SQL Server 2014 Service Pack 1 4/14/2015 Not Applicable Not Applicable 10/10/2017
SQL Server 2014 Service Pack 2 7/14/2016 Not Applicable Not Applicable 1/14/2020
SQL Server 2014 Service Pack 3 10/30/2018 7/9/2019 7/9/2024
SQL Server 2016 6/1/2016 Not Applicable Not Applicable 1/9/2018
SQL Server 2016 Service Pack 2 4/24/2018 7/13/2021 7/14/2026




SQL Server Support Lifecycle
https://support.microsoft.com/en-us/lifecycle/search/1044


2009年9月24日 星期四

T-SQL WHILE Loop and CAST

-- DEMO WHILE Loop and CAST
DECLARE @ip1 varchar(15), @ip1start int
SET @ip1 = '10.3.21.'
SET @ip1start = 131

WHILE (@ip1start<255)
BEGIN
--PRINT 'test'
PRINT @ip1 + CAST(@ip1start as varchar(3))

SET @ip1start = @ip1start + 1
END

GO

2009年9月11日 星期五

SQL Server Linked Server To Oracle

SQL Server Linked Server To Oracle

1.Install Oracle 10g Release 2 Client
and Oracle 10g Release 2 ODAC 10.2.0.2.21
on the server that is running Microsoft SQL Server

2.Create an alias name on the server
that is running SQL Server that points to an Oracle database instance.
(tnsname.ora)

3.Enable Allow inprocess on Oracle Provider for OLE DB
SQL Server Instance
->Server Objects -> Linked Servers
->Providers->OraOLEDB.Oracle->Properties
checked Allow inprocess

4.Execute sp_addlinkedserver to create the linked server,
specifying OraOLEDB.Oracle as provider_name,
and the alias for the Oracle database as data_source.
The following example assumes that the alias has been defined as DQORA8:
exec sp_addlinkedserver @server='OrclDB',
@srvproduct='Oracle',
@provider='OraOLEDB.Oracle',
@datasrc='DQORA8'

5.Use sp_addlinkedsrvlogin to create login mappings
from SQL Server logins to Oracle logins.

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB',
@useself = 'false',
@locallogin = 'Joe',
@rmtuser = 'OrclUsr',
@rmtpassword = 'OrclPwd'

6.若要寫入資料則要而外設定RPC,RPC OUT
USE master;
EXEC sp_serveroption 'OrclDB', 'rpc out', 'True';

7.限制
Table Name 使用大寫或小寫
每個欄位值都必須提供無論是否可NULL或有預設值
日期型別需使用變數來寫入

例如:
DECLARE @v1 datetime SET @v1 = CONVERT(datetime,'14-sep-94')
EXEC('INSERT INTO
DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY)
VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB

一些舊版的Oracle Provider可能不支援AVG()函數(Oracle 10g已直接支援AVG),
若發生錯誤可使用OPENQUERY來達成同樣效果
例如:
SELECT AVG(QTY) FROM ORA..RPUBS.SALES;
發生錯誤則改用
SELECT * FROM OPENQUERY
(
ORA
,'SELECT CAST (AVG(QTY) AS numeric) FROM ORA..RPUBS.SALES'
);


[Reference]
SQL Server 2008 Books Online (August 2009)
Oracle Provider for OLE DB
http://msdn.microsoft.com/en-us/library/ms190618.aspx

2009年8月28日 星期五

SQL Server 設定 2008 Windows 服務帳戶

SQL Server 2008 線上叢書 (2008 年 5 月)
設定 Windows 服務帳戶

http://technet.microsoft.com/zh-tw/library/ms143504.aspx

2009年8月15日 星期六

SQL Server 2008 Books Online 線上叢書 May 2009

SQL Server 2008 Books Online 線上叢書 May 2009
[英文]
Microsoft SQL Server 2008 Books Online (May 2009)
Quick Details
File Name: SQLServer2008_BOL_May2009.msi
Version: 10.00.1601.22
Date Published: 5/21/2009
Language: English
Download Size: 144.5 MB

[繁體中文]
Microsoft SQL Server 2008 線上叢書 (2009 年 5 月)
快速明細
檔案名稱: SQLServer2008_BOL_May2009_CHT.msi
版本: 10.00.1601.22
發佈日期: 2009/6/15
語言: 繁體中文
下載項目大小: 166.0 MB

2009年7月23日 星期四

SQL Server資料庫維護與備份設定

SQL Server資料庫維護與備份設定
建議使用SQL Server內建的維護計畫,可快速設定最基本的SQL Server維護作業
建議建立2個維護計畫,如下說明:

1.系統資料庫(master,msdb,model)
最少每星期完整備份1次
備份前作資料庫完整性檢查

PS.若做了以下動作則建議手動備份一次master
(1)對Instance層級作了組態調整設定
(2)新增個一個資料庫
(3)新增了連線Login帳戶
PS.若在SQL Agent新增一個排程工作,則建議手動備份一次msdb

2.使用者資料庫(應用系統所使用的資料庫)
備份方式與排程時間需視資料庫大小,資料庫性質而定
以中大型大小的線上交易系統資料庫為例可考慮以下列方式執行:
(1)每個星期日完整備份,備份前先做資料庫完整性檢查,再作索引重建,最後才做完整備份。
(2)星期一到星期六可排差異備份,效能不好時可以考慮差異備份前也作索引重建。
(3)每天2到3次的交易紀錄檔備份,例如08:00,13:00,18:00,若要減少資料遺失時間,可以每個小時執行1次,再短一點的話可以縮到每 15 到 30 分鐘進行一次交易記錄檔備份可能就足夠了。

2009年7月7日 星期二

使用統計資料來改善查詢效能-節錄SQL Server 2008 線上叢書-Technet Library

使用統計資料來改善查詢效能
http://technet.microsoft.com/zh-tw/library/ms190397.aspx

在下列狀況中,請考慮更新統計資料:

(1)查詢執行時間很慢
如果查詢回應時間很慢或無法預測,請先確定查詢具有最新的統計資料,然後再執行其他疑難排解步驟。如需有關疑難排解查詢執行緩慢的詳細資訊,請參閱<分析執行緩慢之查詢的檢查清單>。

(2)插入作業針對遞增或遞減索引鍵資料行進行
遞增或遞減索引鍵資料行 (例如 IDENTITY 或即時時間戳記資料行) 之統計資料所需的統計資料更新頻率可能會比查詢最佳化工具所執行的更新頻率更高。插入作業會將新的值附加至遞增或遞減資料行。所加入的資料列數目可能會太小,而無法觸發統計資料更新。如果統計資料不是最新的,而且查詢會從最近加入的資料列中選取,則目前的統計資料將不會具有這些新值的基數估計值。這可能會導致基數估計值不精確以及查詢效能緩慢。

例如,如果統計資料沒有更新成包含最新銷售訂單日期的基數估計值,則從最新銷售訂單日期中選取的查詢就會具有不精確的基數估計值。

(3)在維護作業之後
在執行變更資料分佈的維護程序 (例如截斷資料表或針對大部分的資料列執行大量插入) 之後,請考慮更新統計資料。這樣做可在查詢等候自動統計資料更新時,避免未來查詢處理產生延遲。

重建、重組或重新組織索引等作業都不會變更資料的分佈。因此,在執行 ALTER INDEX REBUILD、DBCC REINDEX、DBCC INDEXDEFRAG 或 ALTER INDEX REORGANIZE 作業之後,您不需要更新統計資料。當您使用 ALTER INDEX REBUILD 或 DBCC DBREINDEX 來重建資料表或檢視表的索引時,查詢最佳化工具就會更新統計資料。不過,這種統計資料更新是重新建立索引的副產品。在 DBCC INDEXDEFRAG 或 ALTER INDEX REORGANIZE 作業之後,查詢最佳化工具則不會更新統計資料。

[Action]
-- 更新資料庫的所有統計資料
EXEC sp_updatestats
--若要判斷上次更新統計資料的時間,請使用 STATS_DATE 函數。
--http://technet.microsoft.com/zh-tw/library/ms173804.aspx


--針對 SalesOrderDetail 資料表的所有索引更新統計資料。
--複製程式碼
USE AdventureWorks;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
http://technet.microsoft.com/zh-tw/library/ms187348.aspx

2009年6月30日 星期二

SQL Server Memory pool(Buffer Pool) - Procedure Cache and Data Cache

-- SQL Server 7.0之前(SQL Server 6.5),Data Cache與Procedure Cache有獨立控制的memory pool
-- SQL Server 7.0與SQL Server 2000則是共用一個memory pool
--
-- 此memory pool即Buffer pool
-- The buffer pool is managed by a process called the lazywriter

--01.Procedure cache (execution plan cache)

select * from master.dbo.syscacheobjects

--DBCC PROCCACHE
--GO

--Free Porcedure Cache
-- Method 1: Free Porcedure Cache by database
--SELECT DB_ID('pubs')
--DBCC FLUSHPROCINDB (5)
--GO
--
-- Method 2 -Free All Porcedure Cache
-- DBCC FREEPROCCACHE
-- GO




-- 02.Data Buffer Cache
-- Get TOP 20 objects in the data cache
-- BUG: DBCC MEMUSAGE Is Not Supported in SQL Server 7.0
--The DBCC MEMUSAGE statement is not supported in SQL Server 7.0. Executing it on servers running heavy loads with large databases may cause the server to stop responding.
-- http://support.microsoft.com/default.aspx?scid=kb;en-us;196629

DBCC MEMUSAGE

-- Free Buffer Cache
-- DBCC DROPCLEANBUFFERS

-- Force all dirty pages to be written to disk
--CHECKPOINT
--GO



-- 03.Other Useful Command - DBCC MEMORYSTATUS
USE master
GO
DBCC MEMORYSTATUS
GO

-- 04.Other Useful Command - DBCC PINTABLE (@db_id,@object_id)
-- 微軟不建議使用以下功能,但仍然可以使用,建議在測試環境才使用
-- keep a table's data pages in memory
-- demo Database named pubs
USE pubs
GO
select DB_ID('pubs')
GO
-- return 5
select OBJECT_ID('dbo.jobs')
GO
-- return 277576027
DBCC PINTABLE (5,277576027)
GO

-- release a pinned table's data pages from memory.
USE pubs
GO
select DB_ID('pubs')
GO
-- return 5
select OBJECT_ID('dbo.jobs')
GO
-- return 277576027
DBCC UNPINTABLE (5,277576027)
GO

[reference]
Analyzing SQL Server 2000 Data Caching
How to Interact with SQL Server's Data and Procedure Cache

2009年6月20日 星期六

跨資料庫存取而不想在別的資料庫額外設定權限EXECUTE AS的用法

最近接到一個需求,需要跨資料庫存取,而不想在別的資料庫額外設定權限,
所以就開始了解一下EXECUTE AS的用法

[注意]執行以下Demo Code需要AdventureWorks資料庫

-- 建立測試資料庫TEST1
CREATE DATABASE [TEST1]
GO

-- 建立測試Login帳戶Brad
CREATE LOGIN [Brad]
WITH PASSWORD = N'P@ssw0rd',
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF,
DEFAULT_DATABASE = [TEST1],
DEFAULT_LANGUAGE = [繁體中文]
GO

-- 建立TEST1對應的User帳戶brad
USE [TEST1]
GO
CREATE USER [Brad]
GO

-- 建立PROCEDURE With EXECUTE AS SELF讀取別的資料庫的資料
CREATE PROCEDURE [usp_GetAdvWorkEmployee]
WITH EXECUTE AS SELF
AS
SELECT SUSER_NAME(), USER_NAME(), COUNT(*)
FROM [AdventureWorks].[HumanResources].[Employee]
GO

-- 給予EXECUTE權限給Brad
GRANT EXECUTE ON [usp_GetAdvWorkEmployee] to [Brad]
GO

-- 從AdventureWork資料庫產生一些資料到TEST1資料庫
SELECT * INTO dbo.Employee FROM AdventureWorks.HumanResources.Employee;
GO

-- 建立一個Procedure JOIN外部資料庫的資料表
CREATE PROCEDURE [usp_EmployeeDetail]
WITH EXECUTE AS SELF
AS
SELECT a.EmployeeID, a.Title, b.AddressID ,b.ModifiedDate
FROM dbo.Employee a LEFT JOIN AdventureWorks.HumanResources.EmployeeAddress b
ON a.EmployeeID=b.EmployeeID
GO

-- 給予EXECUTE權限給Brad
GRANT EXECUTE ON [usp_EmployeeDetail] to [Brad]
GO

-- Create function with EXECUTE AS SELF
USE [TEST1]
GO
CREATE FUNCTION ufn_GetAdvWorkEmployee()
RETURNS @retTable TABLE
(
EmployeeID int,
Title nvarchar(50)
)
WITH EXECUTE AS SELF
AS
BEGIN
INSERT INTO @retTable SELECT EmployeeID,Title FROM [AdventureWorks].[HumanResources].[Employee]
RETURN
END;
GO

-- 給予SELECT權限給Brad
GRANT SELECT ON ufn_GetAdvWorkEmployee to [Brad]
GO

-- 此時使用brad登入到SQL Server執行以下2個Procedure仍會出現錯誤訊息
USE [TEST1]
GO
EXECUTE usp_GetAdvWorkEmployee;
GO
EXECUTE usp_EmployeeDetail;
GO
-- Msg 916, Level 14, State 1, Procedure usp_GetAdvWorkEmployee, Line 4
-- 伺服器主體 "sa" 在目前的安全性內容下無法存取資料庫 "AdventureWorks"。

-- 將測試資料庫的TRUSTWORTHY改為ON
USE MASTER
GO
ALTER DATABASE [TEST1] SET TRUSTWORTHY ON
GO

-- 此時使用brad登入到SQL Server執行以下2個Procedure就可以執行成功
USE [TEST1]
GO
EXECUTE usp_GetAdvWorkEmployee;
GO
EXECUTE usp_EmployeeDetail;
GO

-- 刪除資料庫
USE MASTER
GO
DROP DATABASE [TEST1]
GO
-- 刪除Login登入帳戶
DROP LOGIN [Brad]
GO

2009年5月30日 星期六

SQL Server 2008 與SQL Server 2005 Sample Databases範例資料庫下載與安裝

SQL Server 2008 與SQL Server 2005 Sample Databases範例資料庫下載與安裝

 
SQL Server 2008安裝光碟已不再含有範例資料庫Sample Database,需自行到CodePlex網站的SQL Server Database Product Samples網頁下載
http://msftdbprodsamples.codeplex.com/

 
[SQL Server 2008]
 
 
 
 
[SQL Server 2005]
 
 
SQL Server 2008 Sample Database 安裝
Next
 
 
 
勾選同意
 
 
 
Next
 
 
 
選擇一個要安裝在哪一個本機SQL Server 2008 Instance
 
Read Carefully的Warning:有兩個功能必須是啟用的(FILESTREAM與Full-Text Search)
實際執行安裝完成後發現這兩個功能若沒有啟用仍可正常安裝,只是這兩個功能會被啟動起來
 
 
 
點擊Install開始安裝
 
 
 
PS.安裝過程中會另外出現一個sqlcmd畫面,表示需連進SQL Server 2008 Instance執行安裝的T-SQL,若安裝之前沒有把Instance啟動,在安裝的過程中安裝程式會自動將Instance啟動
 
 
 
Finish完成安裝

SQL Server 2008 Installation on Vista Business Edition(在Vista安裝SQL Server 2008)

SQL Server 2008安裝

執行SQL Server 2008光碟內的setup.exe
會自動偵測並安裝以下兩個必要元件
1.Microsoft .Net Framework 3.5 SP1
2.Microsoft Installer(MSI) 4.5

再次執行setup.exe則會啟動SQL Server 2008安裝中心
在左邊選擇Installation















在右邊選擇第一個
New SQL Server stand-alone installation or add features to an existing installation
新的SQL Server 2008獨立安裝或將功能加入現有的SQL Server 2008執行個體















接下來System Configuration Checker會進行[安裝程式支援規則]檢查軟硬體環境是否符合















在此畫面自動選擇第2個[輸入產品金鑰](Enter the product key),並會自動帶出金鑰(即安裝序號)

若是使用企業評估版,則此畫面請選第1個[指定一個免費版本](Specify a free edtion),並選擇Enterprise Evaluation(企業評估版)即可試用SQL Server 2008 Enterprise版180天














勾選[我接受授權條款](I Accept the license terms)














接下來要安裝必要元件
自動偵測後只需要安裝[安裝程式支援檔案](setup support files)














接下來System Configuration Checker會再次執行














視需求選擇要安裝的項目
因為我需要所有的功能所以我全選了,

當然如果只需要評估資料庫就只需要以下幾項,
應該就夠了
1.Database Engine service
2.Client Tools Connectivity
3.Client Tools SDK
4.Management Tools - Complete
5.SQL Client Connectivity SDK
如果你是開發人員或DBA最後連6線上叢書都裝
6.SQL Server Books Online














選擇執行個體
預設值應該是第1個Default Instance
但我的電腦已經裝了SQL Server 2005作為default instance,所以預設帶出來就幫我選了第2個具名執行個體(Named instance),具名執行個體需輸入一個自訂的Instance名稱,我輸入的是SQL2K8

若想換安裝路徑可在此畫面就進行修改














接下來會檢查你的磁碟空間是否足夠














接下來是每個服務啟動帳戶的設定
畫面因我已自訂了一些本機User帳戶作為啟動帳戶,並將啟動類型都改為Manual手動,因為我不想電腦一起動就自動啟動了SQL Server 2008

本 次安裝最後失敗了,所以我移除SQL Server 2008重新安裝一次並將此畫面的啟動帳戶都先改為本機系統帳戶也就是NT AUTHORITY\SYSTEM後就安裝成功了,此問題我仍未找到解答,所以若要順利安裝請先以本機系統帳戶也就是NT AUTHORITY\SYSTEM來設定















定序
自動帶出的是Windows定序















帳戶提供Account Provisioning
可選擇Windows整合或混合模式,若選了混合模式則要提供一組sa的密碼

指定SQL Server管理員
按一下 [加入目前使用者]Add Current user,
將目前登入系統的使用者加入SQL Server管理員















檢查一下資料目錄位置















預設不啟動FILESTREAM功能















Analysis Service
也將目前登入系統的使用者加入為AS的管理員















確認一下AS的目錄位置















Reporting Service
我選擇第1個自動設定
可選擇第3個安裝但不設定,可以後再自行設定















是否回報微軟錯誤















System Configuration Checker
再次執行















準備安裝
顯示所有安裝摘要資訊















開始安裝

2009年5月27日 星期三

Use User-Defined Functon for default constraint使用Function產生自訂的自動編號欄位

開發人員需要每日Import大量資料,想改用SSIS產生package排程執行,但有一個流程目前是用EXCEL完成的,第一個欄位要自訂格式,年月加上流水號(例如200805000001),希望我在SSIS找到解決方案,當我聽到時第一個想法是透過T-SQL User-Defined Function與default contraint來完成這個需求,果然在google上找到類似的寫法,以下是我改寫後的demo code

--STEP1.Create test database
Use master
GO
CREATE DATABASE TESTDB
GO


--STEP2.Create T-SQL User-Defined Function
-- 在Code裡面已經指定要從這個資料表dbo.autoIDTable取得最大的流水號

USE TESTDB
GO
CREATE FUNCTION GetNewAutoID
(
-- Add the parameters for the function here
--@p1 char(4)
)
RETURNS char(12)
AS
BEGIN
-- Declare the return variable here
DECLARE @ResultVar Char(12)
Declare @MaxValue int
Set @MaxValue=0
Select @MaxValue=Cast(Right(autoid,6) as int) from dbo.autoIDTable
Set @MaxValue=@MaxValue +1
Set @ResultVar=LEFT(cast(convert(varchar , GETDATE(), 112) as varchar ),6) + Right(('00000'+Ltrim(str(@maxValue))),6)
-- Return the result of the function
RETURN @ResultVar
END
GO

--STEP3.Create dbo.autoIDTable Table use default constraint
Create table dbo.autoIDTable
(
autoid char(12) default dbo.GetNewAutoID(),
Data varchar(50)
);

-- STEP4.Try to select fucntion dbo.GetNewAutoID()
SELECT dbo.GetNewAutoID()

-- STEP5.Insert test data
insert into dbo.autoIDTable(Data) values('haha')
insert into dbo.autoIDTable(Data) values('wawa')
insert into dbo.autoIDTable(Data) values('gaga')

-- STEP6.select dbo.autoIDTable
select * from dbo.autoIDTable

-- STEP7.drop test database
USE master
GO
DROP DATABASE TESTDB
GO

2009年5月15日 星期五

SQL Server 2008 Books Online 線上叢書 January 2009

SQL Server 2008 Books Online 線上叢書 January 2009
[英文]
Microsoft SQL Server 2008 Books Online (January 2009)
Quick Details
File Name: SQLServer2008_BOL_January.msi
Version: 10.00.1601.22
Date Published: 1/30/2009
Language: English
Download Size: 144.1 MB

[繁體中文]
Microsoft SQL Server 2008 線上叢書 (2009 年 1 月)
快速明細
檔案名稱: SQLServer2008_BOL_January2009_CHT.msi
版本: 10.00.1601.22
發佈日期: 2009/2/11
語言: 繁體中文
下載項目大小: 165.0 MB

2009年5月7日 星期四

交易記錄檔Transaction log大小的檢查清空與縮小

-- 檢查交易紀錄檔(Transaction log)的大小與使用量
DBCC SQLPERF(logspace)
GO

-- 查詢資料庫檔案與交易紀錄檔(Transaction log)檔的邏輯名稱
USE MyDB
GO
EXEC sp_helpfile
GO

-- 清空交易紀錄檔(Transaction log)
BACKUP LOG MyDB WITH TRUNCATE_ONLY
GO

-- 縮小交易紀錄檔(Transaction log)到200MB
USE MyDB
GO
DBCC SHRINKFILE ('MyDB_Log', 200)
GO

2009年4月16日 星期四

SQL Server 2008 Service Pack 1

[Microsoft Download官方下載更新]
[繁體中文]
版本: 10.00.2531.00
發佈日期: 2009/4/7
語言: 繁體中文
下載項目大小: 16 KB - 916.2 MB*
SQL Server 2008 Service Pack 1

[英文版]
Version: 10.00.2531.00
Date Published: 4/7/2009
Language: English
Download Size: 15 KB - 899.5 MB*
SQL Server 2008 Service Pack 1

2009年3月24日 星期二

使用一句SQL INSERT多筆Record(multiple values)

使用一句SQL INSERT多筆Record(multiple values)

此功能在MySQL在3.22.5之後就有的功能,SQL Server在這個SQL Server 2008版本才加入此功能
-- 切換測試資料庫
USE MyDB
GO
-- 建一個測試資料表
CREATE TABLE [mytable]
(
myid 
nvarchar(10)

,givenName 
nvarchar(50)

,email 
nvarchar(50)

);
GO
-- 一次Insert 多筆資料
INSERT INTO [mytable]
VALUES
('01','Brad','brad@test.com')
,('02','Siliva','siliva@test.com')
,('03','Allen','Allen@test.com');
GO
-- 檢查資料是否正確寫入
SELECT * FROM [mytable];

saving changes is not permitted 不允許儲存變更


saving changes is not permitted 不允許儲存變更

update  2022/7/14

錯誤訊息
The changes that you have made require the following tables to be dropped and re-created

解決方法
To change this option, on the Tools menu, click Options, expand Designers, and then click Table and Database Designers. Select or clear the Prevent saving hanges that require the table to be re-created check box.

SSMS v18.12.1


SQL Server 2008啟動SSMS,開始試試IntelliSence,Import,Export等基本功能,建了一個Table想要再Modify修改Table的Column欄位定義,出現錯誤 "不允許儲存變更saving changes is not permitted"
解法如下:

  1. 請開啟 SQL Server Management Studio (SSMS)
  2. 在 [ 工具 ] 功能表中上, 按一下 [ 選項 ]
  3. 在 [ 選項] 視窗,巡覽窗格中, 按一下 設計工具 (英文)
  4. 選取或清除 [儲存的變更,需要重新建立資料表 ] 核取方塊,然後再按一下 [確定]
To change this option, on the Tools menu, click Options, expand Designers, and then click Table and Database Designers. Select or clear the Prevent saving hanges that require the table to be re-created check box.
參考:
http://msdn.microsoft.com/en-us/library/bb895146.aspx
http://support.microsoft.com/kb/956176/zh-tw

2008年6月19日 星期四

使用T-SQL設定Primary Key

USE Northwind
GO

CREAT TABLE [myTable]
(
id int not NULL,
givenName varchar(50)
)

-- Create Primary Key 並放在另一個FileGroup
ALTER TABLE [myTable]
ADD CONSTRAINT [PK_TBL]
PRIMARY KEY CLUSTERED([id])
on [IDX]


[Reference]
-- 建立或移除Primary Key節至 SQL Server 2005 線上叢書 (2007 年 9 月)
http://msdn.microsoft.com/zh-tw/library/ms190273.aspx

M. 建立含有索引選項的 PRIMARY KEY 條件約束
下列範例會建立 PRIMARY KEY 條件約束 PK_TransactionHistoryArchive_TransactionID,並設定選項 FILLFACTORONLINEPAD_INDEX。產生的叢集索引將與條件約束同名。

USE AdventureWorks;
GO
ALTER TABLE Production.TransactionHistoryArchive WITH NOCHECK
ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
WITH (FILLFACTOR = 75, ONLINE = ON, PAD_INDEX = ON)
GO

N. 在 ONLINE 模式中卸除 PRIMARY KEY 條件約束
下列範例會刪除 PRIMARY KEY 條件約束,並將 ONLINE 選項設為 ON
USE AdventureWorks;
GO
ALTER TABLE Production.TransactionHistoryArchive
DROP CONSTRAINT PK_TransactionHistoryArchive_TransactionID
WITH (ONLINE = ON);
GO

資料治理實施

資料治理實施