在C#中用SQLDMO创建SQL数据库

        ///   <summary>  
        ///   创建数据库。  
        ///   </summary>
        ///   <param name="srvName">表示要连接的服务器名</param>
        ///   <param name="dbName">指定要创建的数据库名</param>
        private string CreateDB(string srvName, string dbName)
        {
            SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
            SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
            srv.Connect(srvName, "sa", "");

            // 新建数据库名(包括路径)
            string dbPath = srv.Registry.SQLDataRoot + "//DATA//" + dbName;

            bool DBExist = false;
            foreach (SQLDMO.Database db in srv.Databases)
            {
                if (db.Name == dbName)
                {
                    DBExist = true;
                }
            }
            //函数返回结果
            string rvCDB;

            if (DBExist)
            {
                rvCDB = "此数据库存名已存在请选择其它名称";
                srv.Close();
                sqlApp.Quit();
                return rvCDB;
            }
            else
                rvCDB = "成功创建数据库!";

            SQLDMO.Database nDB = new SQLDMO.Database();
            SQLDMO.DBFile nDBFile = new SQLDMO.DBFile();
            SQLDMO.LogFile nLogFile = new SQLDMO.LogFile();
            nDB.Name = dbName;
            nDBFile.Name = dbName + "file";
            nDBFile.PhysicalName = dbPath + "_Data.mdf";
            nDBFile.PrimaryFile = true;
            nDBFile.FileGrowthType = 0;
            nDBFile.FileGrowth = 1;
            nDB.FileGroups.Item("primary").DBFiles.Add(nDBFile);
            nLogFile.Name = dbName + "log";
            nLogFile.PhysicalName = dbPath + "_Log.ldf";
            nDB.TransactionLog.LogFiles.Add(nLogFile);
            srv.Databases.Add(nDB);
            srv.Close();
            sqlApp.Quit();
            return rvCDB;
        }                    
            SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
            SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
            srv.Connect("servername", "username", "password");
            SQLDMO.Database nDB = new SQLDMO.Database();
            SQLDMO.DBFile nDBFile = new SQLDMO.DBFile();
            SQLDMO.LogFile nLogFile = new SQLDMO.LogFile();
            nDB.Name = "tmpdb"; //数据库名
            nDBFile.Name = "tmpfile"; //数据库文件名
            nDBFile.PhysicalName = @"e:/temp/tmp.mdf"; //数据库文件在硬盘上存储的实际名称
            nDBFile.PrimaryFile = true;
            nDBFile.FileGrowthType = 0;
            nDBFile.FileGrowth = 1;
            nDB.FileGroups.Item("primary").DBFiles.Add(nDBFile);
            nLogFile.Name = "tmplg";
            nLogFile.PhysicalName = @"e:/temp/tmp.ldf";
            nDB.TransactionLog.LogFiles.Add(nLogFile);
            srv.Databases.Add(nDB);
            srv.Close();
            sqlApp.Quit(); 

相关网址:http://www.codeproject.com/cs/database/DBInstaller.asp?target=SQLDMO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sql server sqldmo_x86_x64,C#数据库备份还原很好用的.dll,里面有使用方法,引用Interop.SQLDMO.dll后的注意事项。 SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户要求为其在后台添加一个管理数据库的功能。于是就出现了这篇文章。 由于客户的数据库和WEB服务不再同一台服务器,当我们把网站部署在服务器上以后,运行程序,提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80040154. 而客户又不想在这台电脑安装MSSQL,所以我们只需要在没有安装MSSQL的电脑上注册SQLDMO.DLL组件。 第一步:首先将msvcr71.dll, SQLDMO.DLL, Resources\2052\sqldmo.rll,Resources\1033\sqldmo.rll 拷贝到C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录。 下载SQLDMO文件 第二步:打开开始,在运行中输入 regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" 注册sqldmo.dll。 正常情况下,经过以上两个步骤,网页就应该可以访问了的。 但是我们经过以上两次操作后,访问网页依然提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80070005.后经过一段时间的检查,我们发现C:\Program Files\文件夹仅有Administrator和System的控制权限,而没有其他任何用户的权限,因此我们为Microsoft SQL Server文件夹增加上Network Service 的读取权限。 至此,问题得到解决!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值