mysql 远程删除数据库_sql server里连接远程服务器,并进行创建和删除新数据库...

这篇博客介绍了如何在SQL Server中通过存储过程实现远程服务器上的数据库创建和删除。首先展示了创建新数据库的存储过程p_CreateDB,详细步骤包括建立SQLDMO对象、连接服务器、创建数据库及数据文件等。接着,提供了删除数据库的存储过程p_DropDB,同样涉及连接服务器和执行删除操作。这两个存储过程可用于自动化管理SQL Server数据库。
摘要由CSDN通过智能技术生成

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,'FileGrou.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

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值