2012年12月11日 星期二

還原MSSQL資料時,遇到"無法獲得獨佔存權,因為資料庫正在使用中"的解決方法

在進行資料還原時,發現要還原的資料庫有人在連線,

所以便無法成功還原。

此時可以使用sp_who,查詢目前連線的資訊。

Ex:

sp_who

041112_0313_MSSQL1

如上例,我們可以看到連線的機器與連線的帳號,此筆ID為68。

如果我們想要移除此連線,可以使用kill指令。

Ex:

kill 68

作完以上動作,即可正常還原資料庫。

 

相關參考連結:
http://www.dotblogs.com.tw/terrychuang/archive/2011/08/15/33186.aspx

2012年11月30日 星期五

設定webservice可以使用Post/Get 方式取回資料

Asp.net 開發的WebService,常見使用方法是加入Web服務參考。
如果要使用網址的方式取回資料,就要再Web.config中加入下段設定。 <system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>

2012年11月23日 星期五

Linked Server(連結的伺服器)

A與B資料庫存在於同一個伺服器,資料互相取得相當容易。

假設A與B資料分散為兩台伺服器,B要取得A的資料時,

可以使用Linked Server(連結的伺服器)技術來做串接。

image

設定方法如下

image

--Setp 1-Create LinkServer
--USE MASTER
--GO
--//[1] Create Linkserver
Exec sp_addlinkedserver
   @server='LDB_MEIHO_MIS', --//linkserver name.
   @srvproduct='LDB_MEI_MIS', --//一般描述
   @provider='SQLOLEDB', --//OLEDB Provider name, check BOL for more providers
   @datasrc='sql2k8r2', --//遠端Server Name  192.168.11.100\sql2k8
   @catalog='MEI_MIS' --//default database for linkserver
GO
--Step 2-Add linked server login
--//[2]Add linked server login
Exec sp_addlinkedsrvlogin
@useself='false', --//false=使用遠端使用者/密碼登入
--//true=使用本地端使用者/密碼連線遠端SERVER                       
@rmtsrvname='LDB_MEI_MIS', --//Linked server name
@rmtuser='admin' , --//遠端登入使用者
@rmtpassword='XXXX' --//遠端登入使用者密碼
GO

建立完成後可在  管理工具>伺服器物件>連結的伺服器  中,看到剛剛建立的物件。

image

取得LDB_MEI_MIS的資料,範例如下:

SELECT     TOP 1 *
FROM       LDB_MEI_MIS.MEI_MIS.dbo.UNIT

延伸:縮短資料庫物件名稱

寫預存程序時,若要使用資料表(LDB_MEI_MIS.MEI_MIS.dbo.UNIT),畫面上打了一大串,可讀性變得很差。

提供兩種方式

  • View
    • 方便預存撰寫
    • 自行定義調整
  • 同義字 CREATE SYNONYM UNIT
    FRO MEI_MIS.DBO.UNIT
  • image