-- 很多朋友問局域網多數據庫服務器訪問該如何操作?下面簡單說明如何配置遠程鏈接訪問。
/*********** 環境說明 ***********/
--http://www.wpf123.com
-- 源機器 IP 爲 10. 0.0.211 ,在該機器所在數據庫建立與目標機器的遠程數據庫鏈接。
-- 目標機器 IP 爲 10. 0.0.222 。
-- 步驟(一)是指直接用 IP 進行遠程鏈接,個人覺得用 IP 鏈接雖然麻煩,但是直觀而且在多服務器操作時不會出現誤鏈接的情況。
-- 步驟(二)是指直接用別名進行遠程鏈接,較方便;但在高壓力,大腦暫時短路情況下容易出現誤鏈接數據庫情況發生。
/*********** 步驟(一) ***********/
-- 建立連接服務器
EXEC sp_addlinkedserver '10.0.0.222' , 'SQL Server'
/*-- 如果數據庫有架構名需要做遠程登錄之間的映射
-- 創建鏈接服務器上遠程登錄之間的映射
--http://www.wpf123.com
EXEC sp_addlinkedsrvlogin '10.0.0.222','false','SA',' 架構名 ',' 登錄密碼 '
*/
-- 查詢數據
-- 含架構名
select top 10 * from [10.0.0.222]. 數據庫名 . 架構名 . 表名
-- 不含架構名
select top 10 * from [10.0.0.222]. 數據庫名 . dbo. 表名
-- 查看鏈接服務器信息
select name , product, provider, data_source, query_timeout, lazy_schema_validation, is_remote_login_enabled, is_rpc_out_enabled
from sys.servers
where is_linked= 1
/*********** 建立步驟(二) ***********/
/*-- 如果用 IP 連接覺得麻煩,可以新建別名
-- 配置鏈接服務器屬性
exec sp_serveroption '222','name','10.0.0.222'
*/
-- 查詢數據
--http://www.wpf123.com
-- 含架構名
select top 10 * from 222. 數據庫名 . 架構名 . 表名
-- 不含架構名
select top 10 * from 222. 數據庫名 . dbo. 表名
-- 刪除鏈接服務器登錄名映射
exec sp_droplinkedsrvlogin '10.0.0.222' ,NULL
-- 刪除鏈接服務器屬性
exec sp_dropserver '222'
--注:如果執行 刪除鏈接服務器時提示如下錯誤時,
消息 15190,級別 16,狀態 1,過程 sp_dropserver,第 56 行
仍有對服務器 'XXXX' 的遠程登錄或鏈接登錄。
執行
exec sp_dropserver ' 鏈接服務器 ' , 'droplogins'
select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]
use 庫名
go
SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, default, default, default, default, default, default);
select * from sys.extended_properties
SELECT objtype, objname, name, value
FROM fn_listextendedproperty(NULL, 'schema', 'dbo', 'table', 'form', 'column', default);
select * from information_schema.columns where table_name= 'form'
SELECT DISTINCT
TOP 100 PERCENT isnull(p.name,'') AS 父對象, o.xtype,
CASE o.xtype WHEN 'C' THEN 'CHECK 約束' WHEN 'D' THEN '默認值或DEFAULT約束'
WHEN 'F' THEN 'FOREIGNKEY約束' WHEN 'L' THEN '日誌' WHEN 'FN' THEN '標量函數'
WHEN 'IF' THEN '內嵌表函數' WHEN 'P' THEN '存儲過程' WHEN 'PK' THEN 'PRIMARYKEY約束'
WHEN 'RF' THEN '複製篩選存儲過程' WHEN 'S' THEN '系統表' WHEN 'TF' THEN '表函數'
WHEN 'TR' THEN '觸發器' WHEN 'U' THEN '用戶表' WHEN 'UQ' THEN 'UNIQUE 約束'
WHEN 'V' THEN '視圖' WHEN 'X' THEN '擴展存儲過程' WHEN 'R' THEN '規則' ELSE NULL
END AS 類型, o.name AS 對象名, o.crdate AS 創建時間, o.refdate AS 更改時間,
c.text AS 聲明語句,OBJECTPROPERTY(o.id, N'IsMSShipped')
FROM dbo.sysobjects o Left JOIN
dbo.sysobjects p ON o.parent_obj = p.id LEFT OUTER JOIN
dbo.syscomments c ON o.id = c.id
WHERE --(o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND
(OBJECTPROPERTY(o.id, N'IsMSShipped') = 0) AND (isnull(p.name,'') <> N'dtproperties') and o.xtype = 'U'
ORDER BY o.xtype DESC
if exists(select 1 from sysobjects where id = object_id( 'BarCode') and type = 'U ')
drop table BarCode
go
/*==============================================================*/
/* Table: BarCode http://www.wpf123.com */
create table BarCode (
ID int not null,
Style char(18) null,
Content varchar(512) null,
Height int null,
Wdith int null,
Remark varchar(512) null,
constraint PK_BARCODE primary key (ID)
)
go
select * from Form where id = '016336CC-C7FA-43D2-9EA5-C3F9A5B47A50'
select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]
select o.name,c.text,'N' from [InsulationExpertSystem_CD_2010-02-16_backup].dbo.sysobjects o ,dbo.syscomments c
where o.id = c.id and o.xtype = 'V' and o.name = 'View_1'
--創建鏈接服務器:
exec master.sys.sp_addlinkedserver 'srv_lnk','','SQLOLEDB','DEVELOPPC-PC'
exec master.sys.sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'
exec master.sys.sp_serveroption 'srv_lnk','rpc out','true' --這個允許調用鏈接服務器上的存儲過程
go
--exec master.sys.sp_dropserver 'srv_lnk','droplogins' --不用就刪除
--go
用SQL語句將遠程SQL Server數據庫中表數據導入到本地數據庫相應的表中
怎樣用SQL語句將一個遠程SQL Server數據庫中各個表的數據導入到本地數據庫相應的表中
http://www.wpf123.com
怎樣用SQL語句將一個遠程SQL Server數據庫中各個表的數據導入到本地數據庫相應的表中?
表結構完全相同,聽說DTS比較方便,但是不會用
一、方法一
1、遠程數據庫註冊到本地的方法:
exec sp_addlinkedserver '名稱','','SQLOLEDB','遠程數據庫的地址' exec sp_addlinkedsrvlogin '名稱','false','本地用戶名稱','遠程用戶名稱','遠程用戶密碼' |
2、倒入表
insert 數據庫.dbo.表 |
建立了連接後,試試看
二、方法二
訪問不同電腦上的數據庫(遠程訪問,只好聯好網就一樣),如果經常訪問或數據量較大,建議用鏈接服務器方法。
1、創建鏈接服務器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','遠程服務器名或IP地址' |
2、使用示例
--查詢示例 --導入示例 go |
3、若不再使用時,刪除鏈接服務器
exec sp_dropserver 'srv_lnk','droplogins' |
三、方法三
如果只是臨時訪問,可以直接使用openrowset。
1、示例1
--查詢示例 --導入示例 |
2、示例2(此示例使用測試正常)
insert 數據庫名稱.dbo.表 |
四、相關問題
問:當導入的數據量很大,而網絡突然中斷,會不會出現問題?
答:中斷的話,就等於什麼也沒做,也就是事務回滾,重新運行。
五、隨後的問題
問:由於在表中,通常都定義了自增量列及主鍵,而自增量列還進行了關連。由於在倒表時,自增量列不隨原表變化,就造成了關聯關係的丟失,通常的做法是: http://www.wpf123.com
SET IDENTITY_INSERT 表名 ON |
即使用“SET IDENTITY_INSERT 表名 ON”將自增量關閉,但是,需要注意的是,當該表中沒有自增量字段時,使用該命令會產生一個錯誤。
因此,在沒有自增量字段的表中進行“插入”操作時,請不要使用“SET IDENTITY_INSERT 表名 ON”。