首页 > 解决方案 > 设置项目创建数据库

问题描述

我不确定,但我认为我的某些权限有问题...

我有这个方法:

  static void ExecuteCommand(string _Command)
    {
        System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + _Command);
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = false;
        //procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        procStartInfo.Verb = "runas";
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        string result = proc.StandardOutput.ReadToEnd();
        proc.WaitForExit();
        MessageBox.Show(result);
    }

首先,我在桌面应用程序中执行此代码并且它可以工作。

  string createDB = @"sqlcmd -S " + SQLINSTANCE + @" -Q ""CREATE DATABASE " + DBNAME + @"""";
  ExecuteCommand(createDB);

但是现在我尝试在 setup-project 中执行它,并使用自定义操作收到此错误:

数据库“master”中的 CREATE DATABASE 权限被拒绝。

如果我在 cmd 控制台(有和没有管理员权限)中执行这个字符串,它工作得很好......

问题出在哪里?

标签: c#sql-serversetup-project

解决方案


尝试使用属性UserNamePassword而不是runas.

var psi = new ProcessStartInfo();

psi.Domain = "domain";
psi.UserName = "username";
psi.Password = password;

推荐阅读