C#如何让SaveFileDialog框访问本地网络中其它电脑的“我的电脑”(未解决)

我在C#中用SQLDMO新建数据库,遇到了一个问题:数据库文件的保存路径问题
    先选定本地网络中的一个SQL服务器(DATASRV),之后在其上新建一个数据库,创建过程中有一个参数:PhysicalName是指定数据库文件(.MDF)的存放路径,假设指定为D:/TEMP/TEST.MDF则是保存在服务器(DATASRV)的D:/TEMP/下。
    用字符串的方式指定没有问题,可以在服务器的指定文件夹下新建数据库文件(即使这个文件夹并没有共享),但我想用一个SaveFileDialog框让用户选择存放路径,问题是(假设服务器上管理员权限的用户名和密码都已知)我只能看到和访问服务器上共享出来的文件夹,但使用这样的路径名PhysicalName参数却不能接受,比如:服务器DATASRV在D盘共享出一个叫SHARE的文件夹。PhysicalName参数只能接受“D:/SHARE/TEST.MDF”这样的路径而不接受“//DATASRV/SHARE/TEST.MDF”这样的路径。
    看起来有两种解决方式:A)让SaveFileDialog框访问服务器上的“我的电脑”(像访问本机一样)   B)通过共享出的文件夹取得它在服务器上的绝对路径


相关代码如下:
            SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
            SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
            srv.Connect(srvName, "sa", "");
            if (srvName != "local")
            sFDNewDB.InitialDirectory = @"//" + srvName;
            if(sFDNewDB.ShowDialog() == DialogResult.Cancel)
            {
                srv.Close();
                sqlApp.Quit();
                return;
            }
            dbPath = sFDNewDB.FileName;
            dbName = dbPath.Substring(dbPath.LastIndexOf("//")+1,dbPath.Length - dbPath.LastIndexOf("//") - 5);
            bool DBExist = false;
            foreach (SQLDMO.Database db in srv.Databases)
            {
                if (db.Name == dbName)
                {
                    DBExist = true;
                }
            }
            if (DBExist)
            {
                staS.Items["SSLDB"].Text = "此数据库存名已存在请选择其它名称";
                srv.Close();
                sqlApp.Quit();
                return;
            }
            else
                staS.Items["SSLDB"].Text = "正在创建数据库...";

            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;
            nDBFile.PrimaryFile = true;
            nDBFile.FileGrowthType = 0;
            nDBFile.FileGrowth = 1;
            nDB.FileGroups.Item("primary").DBFiles.Add(nDBFile);
            nLogFile.Name = dbName + "log";
            nLogFile.PhysicalName = @dbPath.Substring(0,dbPath.Length - 3) + "ldf";
            nDB.TransactionLog.LogFiles.Add(nLogFile);
            srv.Databases.Add(nDB);
            //程序在这里报错:
            //The physical file name '//DATASRV/SHARE/TEST.MDF'my be incorrect
            srv.Close();
            sqlApp.Quit();

我的暂时解决办法:
string dbPath = srv.Registry.SQLDataRoot + "//DATA//" + dbName;
把文件存到服务器SQLServer安装文件夹的DATA文件夹里
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值