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

php中文网
发布: 2016-06-07 17:47:17
原创
1161人浏览过

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 @err0 GOTO lb_Err

--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
  EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
  IF @err0 GOTO lb_Err

  EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName
END
ELSE
  EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName,@UserName,@pwd

IF @err0 GOTO lb_Err
--新数据库对象创建
EXEC @err=sp_oacreate 'SQLDMO.Database',@Dbid OUT
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @Dbid, 'Name',@Des_DB
IF @err0 GOTO lb_Err
/*
---这里可以设置数据文件与日志文件的属性,不写就由sql server默认
--新数据库DB文件对象创建,并设置属性
EXEC @err=sp_oacreate 'SQLDMO.DBFile',@DBFile OUT
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'Name','tmpfile'
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'PhysicalName','c:tmp.mdf'
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'PrimaryFile','true'
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'FileGrowthType',0
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, 'FileGrowth',1
IF @err0 GOTO lb_Err
--新数据库对象加入DB文件
EXEC @err = sp_OAMethod @Dbid,'FileGrou.Item("primary").DBFiles.Add',null,@DBFile
IF @err0 GOTO lb_Err

--新数据库LOG文件对象创建,并设置属性
EXEC @err=sp_oacreate 'SQLDMO.LogFile',@LogFile OUT
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @LogFile, 'Name','tmplg'
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @LogFile, 'PhysicalName','c:tmp.ldf'
--新数据库对象加入DB文件
EXEC @err = sp_OAMethod @Dbid,'TransactionLog.LogFiles.Add',null,@LogFile
IF @err0 GOTO lb_Err
*/
--在服务器上创建 新数据库
EXEC @err = sp_OAMethod @srvid,'Databases.Add',null,@dbid
IF @err0 GOTO lb_Err

/*
EXEC @err= sp_OAGetProperty @srvid, 'Databases', @dbsid OUT
IF @err0 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

二、删除数据库

若冰企业商务平台.net
若冰企业商务平台.net

集企业自助建站、网络营销、商品推广于一体的系统 功能说明: 1、系统采用Microsoft SQL Server大型数据库支持,查询数据库用的全是存储过程,速度和性能极好。开发环境是vs.net,采用4层结构,具有很好的可维护性和可扩冲性。 2、用户注册和登陆 未注册用户只具备浏览商品、新闻和留言功能;要采购商品,需接受服务协议并填写相关注册信息成为正式用户后方可进行,以尽可能减少和避免无效

若冰企业商务平台.net 0
查看详情 若冰企业商务平台.net

/*
测试

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 @err0 GOTO lb_Err

--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
  EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
  IF @err0 GOTO lb_Err

  EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName
END
ELSE
  EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName,@UserName,@pwd

IF @err0 GOTO lb_Err

--删除数据库
--这两个都可以删除
EXEC @err = sp_OAMethod @srvid,'KillDatabase',null,@Des_DB
IF @err0 GOTO lb_Err
/*
--
EXEC @err = sp_OAMethod @srvid,'Databases.Remove',null,@Des_DB
IF @err0 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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号