利用储存导入链接服务器的所有用户表(原作)

原创 2004年07月02日 23:51:00

--利用储存导入链接服务器的所有用户表<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

--本例链接到FOXPRO数据库, SQL Server本地实例PSMS

 

--一、   创建四个储存过程

--1、建立链接服务器

CREATE     PROCEDURE P_CreateSrv

     @server nvarchar(30)='PSMS',

     @DBPath nvarchar(30)='C:/PSMS_DB1'

AS

DECLARE @SourceDB nvarchar(400)

IF EXISTS(select * from master..sysservers where srvname=@server)

     EXEC sp_dropserver @server, N'droplogins'

SELECT @SourceDB='Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB='+@DBPath+';'

EXEC sp_addlinkedserver

     @server,

     '',

     'MSDASQL',

     null,

     NULL,

     @SourceDB

 

--2、将链接服务器的一个表读入临时表

CREATE   PROCEDURE P_Table

@table nvarchar(40)='editbase',

@server nvarchar(40)='psms'

AS

declare @Sql nvarchar(4000),@tmpTable nvarchar(30)

SELECT  @tmpTable='##'+LTRIM(@table)

IF EXISTS (select * from tempdb.dbo.sysobjects where [name]=@tmpTable and xtype=N'U')

   EXEC ('drop table '+@tmpTable)

select @Sql='SELECT * into '+@tmpTable+' FROM OPENQUERY('+@server+', ''select * from '+@table+''')'

exec (@Sql)

 

--3、通过调用临时表建立本地表

CREATE    PROCEDURE P_ImportTable

@table nvarchar(40)='editbase',

@server nvarchar(40)='psms'

AS

 

declare @Sql nvarchar(4000),@tmpTable nvarchar(30)

IF EXISTS (select * from dbo.sysobjects where id = object_id(@table) and OBJECTPROPERTY(id, N'IsUserTable') = 1)

   EXEC ('drop table '+@table)

EXEC dbo.P_Table @table,@server

SELECT  @tmpTable='##'+LTRIM(@table)

SELECT  @Sql='SELECT * into '+@Table+' FROM '+@tmpTable

EXEC   (@Sql)

EXEC ('drop table '+@tmpTable)

 

--4、运用游标导入链接服务器上的所有用户表

CREATE PROCEDURE P_ImportAllTables

     @server nvarchar(30)='psms',

     @DBPath nvarchar(30)='c:/psms_db1'

AS

EXEC [dbo].[P_CreateSrv] @server, @DBPath

 

DECLARE @Sql nvarchar(4000)

SELECT   @Sql='select * into ##tmpAllTables from openrowset(''MSDASQL'',''DRIVER={SQL Server};Server=(Local);Initial Catalog=psms;Integrated Security=SSPI;'',''set fmtonly off exec sp_tables_ex '+@server+''')'

EXEC(@Sql)

 

DECLARE @tmpTable nvarchar(30)

DECLARE crtmpTable CURSOR FOR

SELECT TABLE_NAME FROM ##tmpAllTables WHERE TABLE_TYPE=N'TABLE'

 

OPEN crtmpTable

FETCH NEXT FROM crtmpTable INTO @tmpTable

 

WHILE(@@fetch_status<>-1)

BEGIN

     IF (@@fetch_status<>-2)

     BEGIN

         EXEC [dbo].[P_ImportTable] @tmpTable, @server

     END

     FETCH NEXT FROM crtmpTable

           INTO @tmpTable

END

 

CLOSE crtmpTable

DEALLOCATE crtmpTable

EXEC ('drop table ##tmpAllTables')

 

--二、   执行

EXEC [dbo].[P_ImportAllTables] @server='Psms2', @DBPath='C:/psms_db2'

 

利用储存导入链接服务器的所有用户表

--本例链接到FOXPRO数据库, SQL Server本地实例PSMS--一、   创建四个储存过程--1、建立链接服务器CREATE     PROCEDURE P_CreateSrv      ...
  • jackeyabc
  • jackeyabc
  • 2007年03月22日 10:24
  • 563

SQL中重复数据的查询与删除

========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity...
  • linda1000
  • linda1000
  • 2013年09月29日 16:21
  • 10836

JAVA中REPLACE和REPLACEALL的区别(转)

replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(C...
  • abc5382334
  • abc5382334
  • 2013年10月31日 21:18
  • 1354

UNIX网络编程——使用select函数的TCP和UDP回射服务器程序

服务器程序:#include #include #include #include #include #include #include #include #include #inc...
  • ctthunagchneg
  • ctthunagchneg
  • 2013年07月25日 19:16
  • 1469

理解 select 函数并实现服务器端

运用select 函数是最具有代表性的实现复用服务器端方法。Windows平台下也有同名函数提供相同功能,因此具有良好的移植性。     select函数的功能和调用顺序     使用select...
  • u012469252
  • u012469252
  • 2015年01月24日 16:40
  • 810

oracle表空间查询维护命令大全之三(临时表空间)史上最全

oracle临时表空间维护命令汇总,包含临时表空间的创建,切换,以及查询使用情况。...
  • lihaiwenshu
  • lihaiwenshu
  • 2014年10月22日 16:26
  • 1381

Linux select TCP并发服务器与客户端编程

Linux C语言 TCP并发服务器 select 服务器端代码: #inc
  • szkbsgy
  • szkbsgy
  • 2013年08月29日 23:07
  • 7173

使用select编写服务器

io多路复用是通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般都是读就绪或者写就绪),就能通知应用程序进行相应的读写操作。select函数作为io多路复用的机制,第一个参数nfds是fd_s...
  • holyshit666
  • holyshit666
  • 2016年09月24日 23:41
  • 324

SQL存储过程的调用及写法

调用函数: public class SqlProcess { public int ReturnValue = 0; public Dat...
  • Raywang80s
  • Raywang80s
  • 2017年07月10日 14:16
  • 230

1高并发服务器:多路IO之select

 1 select A:select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开 的文件描述符个数并不能改变select监听文件个数 ...
  • toto1297488504
  • toto1297488504
  • 2014年09月30日 22:35
  • 1896
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用储存导入链接服务器的所有用户表(原作)
举报原因:
原因补充:

(最多只允许输入30个字)