一、创建新库

  • 栏目:数据 时间:2020-04-15 09:57
<返回列表

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

CREATE PROCEDURE [dbo].[p_CreateDB]   @Des_DB sysname,  @ServerName sysname=N'',  @UserName sysname=N'',  @pwd sysname=N'', @fliename sysname   AS  SET NOCOUNT ON DECLARE @srvid int, @dbsid int, @Dbid int, @DBFile int,  @LogFile int, @CmdStr nvarchar(4000)  declare @err int,@src varchar(255), @desc varchar(255),@dname varchar(255)   IF ISNULL(@ServerName,N'')=N''  SET @ServerName=@@ServerName   EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT  IF @err<>0 GOTO lb_Err  IF ISNULL(@UserName,N'')=N''  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 EXEC @err=sp_oacreate 'SQLDMO.DBFile',@DBFile OUT IF @err<>0 GOTO lb_Err EXEC @err=sp_oasetproperty @DBFile, 'Name',@Des_DB IF @err<>0 GOTO lb_Err set @dname=@fliename+@Des_DB+'.mdf' EXEC @err=sp_oasetproperty @DBFile, 'PhysicalName',@dname 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',10 IF @err<>0 GOTO lb_Err EXEC @err=sp_oasetproperty @DBFile, 'FileGrowth',50 IF @err<>0 GOTO lb_Err EXEC @err = sp_OAMethod @Dbid,'FileGroups.Item("primary").DBFiles.Add',null,@DBFile IF @err<>0 GOTO lb_Err EXEC @err=sp_oacreate 'SQLDMO.LogFile',@LogFile OUT IF @err<>0 GOTO lb_Err set @dname=@Des_DB+'_log' EXEC @err=sp_oasetproperty @LogFile, 'Name',@dname IF @err<>0 GOTO lb_Err set @dname=@fliename+@dname+'.ldf' EXEC @err=sp_oasetproperty @LogFile, 'PhysicalName',@dname 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 ;

一、创建新库

/* 测试 在sql2005中通过查询分析器,连接到sql2000,并创建了 tmpdb 库:成功

p_CreateDB 'tmpdb1','data','sa','sa'

*/

-----------------------创建存储过程开始--------------------if object_id('p_CreateDB') is not nulldrop procedure p_CreateDBgoCREATE PROCEDURE p_CreateDB @Des_DB sysname, --目标数据库@ServerName sysname=N'', --服务器名@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录@pwd sysname=N'' --密码 ASSET NOCOUNT ONDECLARE @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 OUTIF @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,@ServerNameENDELSE EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName,@UserName,@pwd

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

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

/*EXEC @err= sp_OAGetProperty @srvid, 'Databases', @dbsid OUTIF @err0 GOTO lb_Err

SET @CmdStr = 'Add'EXEC @err = sp_OAMethod @dbsid,@CmdStr,null,@dbid*/

--结束SET @err=0GOTO 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 @errGO

二、删除数据库

/*测试

p_DropDB 'tmpdb1','data','sa','sa'*/

if object_id('p_DropDB') is not nulldrop procedure p_DropDBgoCREATE PROCEDURE p_DropDB @Des_DB sysname, --目标数据库@ServerName sysname=N'', --服务器名@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录@pwd sysname=N'' --密码 ASSET NOCOUNT ONDECLARE @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 OUTIF @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,@ServerNameENDELSE EXEC @err=sp_oamethod @srvid,'connect',NULL,@ServerName,@UserName,@pwd

IF @err0 GOTO lb_Err

--删除数据库--这两个都可以删除EXEC @err = sp_OAMethod @srvid,'KillDatabase',null,@Des_DBIF @err0 GOTO lb_Err/*--EXEC @err = sp_OAMethod @srvid,'Databases.Remove',null,@Des_DBIF @err0 GOTO lb_Err*/

--结束SET @err=0GOTO 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 @errGO

上一篇:数据库名.dbo.表名),因为此组件已作为此服务器安全配置的一部分而被关闭 下一篇:没有了

更多阅读

一、创建新库

数据 2020-04-15
sql server里连接远程服务器,并进行创建和删除新数据库教程 CREATE PROCEDURE [dbo].[p_CreateDB]   @D...
查看全文

代码如下复制代码,听说效率比较高的一

数据 2020-04-14
文章有二个实例一个是sql2000的分页存储过程一个是sql2005的分页存储过程,有需要的同学可以拿...
查看全文

数据库名.dbo.表名),因为此组件已作为此

数据 2020-04-14
数据库教程1:AAA数据库2:BBB 如果出现错误提示: SQL Server 阻止了对组件 'Ad Hoc DistributedQuer...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有