在sql server里连接远程服务器,并进行创建和删除新数据库
一、创建新库
/*
测试 在sql2005中通过查询分析器,连接到sql2000,并创建了 tmpdb 库:成功
p_CreateDB 'tmpdb1','data','sa','sa'
*/
-----------------------创建存储过程开始--------------------
if object_id('p_CreateDB') is not null
drop procedure p_CreateDB
go
CREATE PROCEDURE p_CreateDB
@Des_DB sysname, --目标数据库
@ServerName sysname=N'', --服务器名
@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,--服务器的对象
@dbsid int,
@Dbid int,--新建数据库对象
@DBFile int,--新建数据库DB文件
@LogFile int,--新建数据库Log文件
@CmdStr nvarchar(4000)
declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量
IF ISNULL(@ServerName,N'')=N'' SET @ServerName=@@ServerName --默认为本地数据库
--创建sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err
--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName
END
ELSE
EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName,@UserName,@pwd
IF @err<>0 GOTO lb_Err
--新数据库对象创建
EXEC @err=sp_oacreate 'SQLDMO.Database',@Dbid OUT
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @Dbid, 'Name',@Des_DB
IF @err<>0 GOTO lb_Err
/*
---这里可以设置数据文件与日志文件的属性,不写就由sql server默认
--新数据库DB文件对象创建,并设置属性
EXEC @err=sp_oacreate 'SQLDMO.DBFile',@DBFile OUT
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'Name','tmpfile'
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'PhysicalName','c:/tmp.mdf'
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'PrimaryFile','true'
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'FileGrowthType',0
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'FileGrowth',1
IF @err<>0 GOTO lb_Err
--新数据库对象加入DB文件
EXEC @err = sp_OAMethod @Dbid,'FileGroups.Item("primary").DBFiles.Add',null,@DBFile
IF @err<>0 GOTO lb_Err
--新数据库LOG文件对象创建,并设置属性
EXEC @err=sp_oacreate 'SQLDMO.LogFile',@LogFile OUT
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @LogFile, 'Name','tmplg'
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @LogFile, 'PhysicalName','c:/tmp.ldf'
--新数据库对象加入DB文件
EXEC @err = sp_OAMethod @Dbid,'TransactionLog.LogFiles.Add',null,@LogFile
IF @err<>0 GOTO lb_Err
*/
--在服务器上创建 新数据库
EXEC @err = sp_OAMethod @srvid,'Databases.Add',null,@dbid
IF @err<>0 GOTO lb_Err
/*
EXEC @err= sp_OAGetProperty @srvid, 'Databases', @dbsid OUT
IF @err<>0 GOTO lb_Err
SET @CmdStr = 'Add'
EXEC @err = sp_OAMethod @dbsid,@CmdStr,null,@dbid
*/
--结束
SET @err=0
GOTO lb_Exit
--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
EXEC sp_OADestroy @LogFile
EXEC sp_OADestroy @DBFile
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,'DisConnect'
RAISERROR(N'错误编号 %#x, 错误源 "%s", 错误描述 "%s"',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @LogFile
EXEC sp_OADestroy @DBFile
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,'DisConnect'
RETURN @err
GO
二、删除数据库
/*
测试
p_DropDB 'tmpdb1','data','sa','sa'
*/
if object_id('p_DropDB') is not null
drop procedure p_DropDB
go
CREATE PROCEDURE p_DropDB
@Des_DB sysname, --目标数据库
@ServerName sysname=N'', --服务器名
@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,--服务器的对象
@dbsid int,
@Dbid int,--数据库对象
@CmdStr nvarchar(4000)
declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量
IF ISNULL(@ServerName,N'')=N'' SET @ServerName=@@ServerName --默认为本地数据库
--创建sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err
--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName
END
ELSE
EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName,@UserName,@pwd
IF @err<>0 GOTO lb_Err
--删除数据库
--这两个都可以删除
EXEC @err = sp_OAMethod @srvid,'KillDatabase',null,@Des_DB
IF @err<>0 GOTO lb_Err
/*
--
EXEC @err = sp_OAMethod @srvid,'Databases.Remove',null,@Des_DB
IF @err<>0 GOTO lb_Err
*/
--结束
SET @err=0
GOTO lb_Exit
--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,'DisConnect'
RAISERROR(N'错误编号 %#x, 错误源 "%s", 错误描述 "%s"',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,'DisConnect'
RETURN @err
GO
--更多功能 可以 参考联机丛书
分享到:
相关推荐
C#和ADO.NET是什么关系?为什么讲解C#连接数据库的资料里面普遍都讲的用ADO.NET技术连接数据库?这里读者仅需记住:用C#开发软件需要连接数据库时,尽管使用ADO.NET技术好了,不用考虑它们啥关系。
VBA连接SQLSERVER数据库实例
exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * ...
4.利用SQL Server外围配置器配置数据库引擎的服务及远程连接,设置为“本地连接和远程连接”,选择“同时使用TCP/IP和named pipes”。 5.利用SQL Server Management Studio注册安装的命名实例。 6.利用SQL Server ...
4.利用SQL Server外围配置器配置数据库引擎的服务及远程连接,设置为“本地连接和远程连接”,选择“同时使用TCP/IP和named pipes”。 5.利用SQL Server Management Studio注册安装的命名实例。 6.利用SQL Server ...
SQL Server 2008默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,远程连接数据库。需要做两个部分的配置: 1,SQL Server Management Studio Express(简写SSMS) 2,SQL Server ...
4.利用SQL Server外围配置器配置数据库引擎的服务及远程连接,设置为“本地连接和远程连接”,选择“同时使用TCP/IP和named pipes”。 5.利用SQL Server Management Studio注册安装的命名实例。 6.利用SQL Server ...
就是在本地或者远程连接别人的数据库的时候,以ip地址作为服务器名称 以SQL Server 身份验证(即输入登录名和密码)的方式登录数据库 总会出现错误 比如说会提示一下错误: 用户 ‘sa’ 登录失败,该用户与可信 SQL ...
SQL远程连接不上服务器解决方法 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。 如telnet 202.114.100.100 1433
SqlServer2008通过Oracle provider for OLEDB访问远程Oracle数据库 包括链接服务器环境安装、链接服务器创建、远程建表、修改表,增删改查数据,创建、执行带参与无参存储过程的方法等,资料为作者参考网络资料整理...
4.利用SQL Server外围配置器配置数据库引擎的服务及远程连接,设置为“本地连接和远程连接”,选择“同时使用TCP/IP和named pipes”。 5.利用SQL Server Management Studio注册安装的命名实例。 6.利用SQL Server ...
完成后,如下图:现在测试一下,用帐号user本地登录SqlServer,新建一个查询,输入Select * From [链接服务器名].[远程数据库名].[所有者].[表名]比如Select * from [127.0.0.1].[cntvs].[dbo].[t_class]没问题的话,...
如何链接远程服务器,同步更新数据库,设置MSDTC的方法
不同服务器数据库之间的数据操作 --创建链接服务器 exec sp_addlinkedserver '链接名', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin '链接名', 'false ',null, '用户名 ', '密码 ' --查询...
网上基本找不到,sqlserver2012版本链接oracle乱码问题解决实测版。
本文档,实现在局域网内远程访问SQL server 2005的配置,详细介绍了步骤,并用贴图,以快速进行设置。在VS2012中通过两种方法测试是否对SQL服务器连接成功.其中一种以C#代码测试为主,并贴有完整测试代码。通过个人...
本文档,详细介绍了跨越局域网不同网络远程访问SQL Server 2005 的步骤,其中对路由器的...第二种以VS2012 C#语言,采用代码方式,并附有完整测试C#代码,更便于代码远程连接服务器,实现对数据的查看、删除、更新等。
另外很多用户将数据库服务器的远程连接给关掉或者将数据库服务器安装在局域网内 使得外部的使用管理有了不少的麻烦,SSOM系统可以安装在你的内部服务器上,这样外部用户直接用(local)连接就可以管理了 在mysql服务器...
远程连接外地的sql server 2000服务器的解决方案
MS SQL Sever 2000通过本地客户端远程连接数据库服务器教程(dos图解).doc 首先 您的电脑必须装有SQL2000,如果没有安装请先去安装好再进行以下操作,另外如果您购买的数据库是SQL2005,那么您必须先在本地安装SQL2005!...