av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

詳解在不同的SQLServer數(shù)據(jù)庫之間查詢數(shù)據(jù)

1, 什么是Synonym

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),尼勒克企業(yè)網(wǎng)站建設(shè),尼勒克品牌網(wǎng)站建設(shè),網(wǎng)站定制,尼勒克網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,尼勒克網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

Synonym(同義詞)是Sql 2005的新特性。推出已經(jīng)好幾年了。你可以簡單的理解Synonym 為其他表的別名。我們使用Northwind數(shù)據(jù)庫為例。比如,看下面的例子

Synonym MyCustomers FOR Customers

為Customers表創(chuàng)建一個Synonym,叫MyCustomers。 你可以把這個MyCustomers當作一個普通的表,可以對它進行查詢,更新,刪除和插入。比如

查詢: Select * from MyCustomers.

插入:  Insert into MyCustomers  (CustomersID, CompanyName) values ('Tom', 'MS')

所有的操作,和普通的表沒有區(qū)別。

2, Synonym的應(yīng)用

在你的程序發(fā)布的時候,你突然發(fā)現(xiàn)你需要更改某個表名,或字段名。而你的程序已經(jīng)不可能修改。這時,怎么辦呢?那就創(chuàng)建Synonym吧。當然,在sql2000時代,你可以使用view來做這個事情,或sprocs或udf等。但Synonym有其它所不能的功能,那就是跨數(shù)據(jù)庫,跨服務(wù)器。

3,Synonym在同一服務(wù)器上的不同數(shù)據(jù)庫

對于同一服務(wù)器上的不同數(shù)據(jù)庫,我們可以使用Synonym,將其他數(shù)據(jù)庫中的表或view或sprocs及udf在本數(shù)據(jù)庫中映射別名。這樣,就可以不用更改連接字符串,而在當前對話數(shù)據(jù)庫的情況下,獲取其他數(shù)據(jù)庫的數(shù)據(jù),并對它進行,查詢,更新,刪除和插入工作。

先假設(shè)已經(jīng)存在Northwind數(shù)據(jù)庫,然后,再建一個數(shù)據(jù)庫。我們在新的數(shù)據(jù)庫上,創(chuàng)建Customer表的Synonym.

[[2352]]Create Synonym MyCustomers For Northiwind.dbo.Customers 

需要注意的是,后面需要寫清那個數(shù)據(jù)庫,那個表,中間dbo為表的owner.然后,運行 Insert into MyCustomers  (CustomersID, CompanyName) values ('Tom', 'MS')和Select * from MyCustomers. 看看是不是真的像普通表那樣。

4, Synonym在不同服務(wù)器上的不同數(shù)據(jù)庫

假設(shè),我們有一臺數(shù)據(jù)庫服務(wù)器叫SqlTest。上面有個數(shù)據(jù)庫叫Northwind。我們本地還有一臺數(shù)據(jù)庫服務(wù)器。叫LocalTest. 其上面有一數(shù)據(jù)庫叫Northwind或其他什么的。突然有一天,為了使本地的數(shù)據(jù)庫跑的更快,本地的老數(shù)據(jù)被移到SqlTest上去了,本地只保存最近更新的。那老數(shù)據(jù)總還是要用的,怎么樣實現(xiàn)不同服務(wù)器之間的數(shù)據(jù)操作呢?那就用Synonym吧。如下

Create Synonym MyCustomers For SqlTest.Northiwind.dbo.Customers 

在上一個例子的基礎(chǔ)上,加了個機器名字而已。就這么簡單?不是吧?那臺服務(wù)器還不一定知道用戶名和密碼呢。恩,是的,還要在本地服務(wù)器上,注冊下遠程的服務(wù)器。使用sp_addlinkedserver,次存儲過程定義如下:

sp_addlinkedserver [ @server = ] 'server'
    
[ , [ @srvproduct = ] 'product_name' ]
    [ , [ @provider = ] 'provider_name' ]
    [ , [ @datasrc = ] 'data_source' ]
    [ , [ @location = ] 'location' ]
    [ , [ @provstr = ] 'provider_string' ]
    [ , [ @catalog = ] 'catalog' ]

可以運行下面的腳本,將SqlTest注冊到本地

EXEC sp_addlinkedserver 
   @server = 'SqlTest',
   @provider = 'MSDASQL',
   @provstr = 'DRIVER={SQL Server};SERVER=SqlTest;UID=sa;PWD=;'

這樣,就可以把遠程數(shù)據(jù)庫當成本地的來使用。

5,Synonym的其他功能和用UI創(chuàng)建Synonym

Synonym不光可以對表創(chuàng)建,也可以為view,sprocs,以及udf創(chuàng)建相應(yīng)的Synonym. 如圖:

Sql2005的Server Managerment Studio有這么一項,選擇后,會出現(xiàn)下面畫面。添入名稱等,選擇object的類型,你就可以選為View,Table, Sprocs和udf創(chuàng)建Synonym了。

6, openquery

相對于Synonym,OpenQuery相對來說,功能就弱了點。其只是在調(diào)用其它數(shù)據(jù)庫上的sprocs.比如

select * from openquery([SqlTest], 'exec northwind.dbo.
[Customers By City] @param1=N''London''')where CustomerID = 'AROUT'

這就是在執(zhí)行SqlTest服務(wù)器上的,northwind數(shù)據(jù)庫下的,[Customers By City]的存儲過程。你可以在Linq To Sql進階系列(五)Store Procedure篇 一文中,獲得該存儲過程。openquery其***個參數(shù)為數(shù)據(jù)服務(wù)器的名稱。如果是異地的,也需要在本地注冊它,和Synonym相同。你也可以寫本地的機器名,那就成了本地跨數(shù)據(jù)庫的操作了。在上面的這個例子中,其語句中有London,是傳入存儲過程的值。因為其已經(jīng)被 ' 引過,在openquery函數(shù)下,又要被 ' 引。所以,它兩頭加了兩個 ''。 如果有疑問,請參閱SQL 語句中特殊字符的處理及預(yù)防sql 注射

7, Linq 對Synonym的支持

目前SqlMetal和OR designer無法對Synonym做映射。但是,用戶依然可以通過手工修改dbml 達到映射的目的。Synonym在Linq中的使用。和其他表等沒有任何差別。

結(jié)論:通過Synonym,我們可以實現(xiàn)不同數(shù)據(jù)庫,以及不同服務(wù)器之間的數(shù)據(jù)分流。以達到平衡負載的目的,提高效率的目的。


網(wǎng)頁名稱:詳解在不同的SQLServer數(shù)據(jù)庫之間查詢數(shù)據(jù)
網(wǎng)頁地址:http://uogjgqi.cn/article/ccccjsg.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流