AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-1852526

nikhil's questions

Martin Hope
nikhil
Asked: 2025-01-14 17:12:59 +0800 CST

C# Não é possível encontrar o arquivo de atalho na área de trabalho

  • 5

Criei um projeto instalador Wix que está instalando o projeto em C:\ProgramFiles e um atalho na área de trabalho do (PharmSpec.exe) foi criado. Quero excluir esse arquivo no atalho da área de trabalho com algum código C#. Estou tentando, como mencionado no post Remover atalho da área de trabalho , mas não consigo encontrar o arquivo.

Eu tentei "PharmSpec.exe.lnk", "PharmSpec.exe" e "PharmSpec.lnk" do link acima. Mas não importa o que aconteça, não consigo encontrar esse arquivo.

Também tentei listar todos os arquivos que estão na área de trabalho da seguinte forma, mas tudo o que vejo são 3 arquivos, desktop.ini, 2 outros arquivos e não este arquivo. Por favor, desconsidere como o código está escrito, estou apenas testando para ver se consigo acessar o arquivo PharmSpec.

static void GetFiles()
        {
            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            //string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            if (System.IO.File.Exists(Path.Combine(desktopPath, "PharmSpec.lnk")))
            {
              //NEVER COMES HERE
              //System.IO.File.Delete(Path.Combine(desktopPath , "shortcut.lnk"));
            }
            DirectoryInfo d = new DirectoryInfo(desktopPath); //Assuming Test is your Folder

            FileInfo[] Files = d.GetFiles("*"); //Changed search to *.exe still no use
            string str = "";

            foreach (FileInfo file in Files)
            {
                str = str + ", " + file.Name;
            }
            Console.Write(str);

        }

Aqui está a captura de tela de toda a área de trabalho,

área de trabalho com propriedades de arquivo

Como posso excluir o arquivo de atalho na área de trabalho? Por favor, ajude.

c#
  • 2 respostas
  • 34 Views
Martin Hope
nikhil
Asked: 2024-11-29 16:10:26 +0800 CST

O instalador do Wix falhou ao executar o pacote exe durante a instalação silenciosa

  • 5

Estou tentando executar uma instalação silenciosa de um arquivo exe dos drivers FTDI. Estou obtendo esses drivers aqui . Após o download, quando eu extraio o .exe com 7-zip, ele cria uma pasta com dlls e dpinst-amd64.exe, assim como na captura de tela abaixo. Quando tento o comando

dpinst-amd64.exe /q /se

no prompt de comando, funciona bem. Mas fazer isso com o instalador Wix está falhando em executar o pacote. No entanto, os outros pacotes instalam bem dentro deste código. Por favor, ajude.

Conteúdo FTDI

Isto é o que tenho no Bundle.wxs

<Chain>

      <ExePackage Id="FTDIDriversInstaller"
                  SourceFile="$(var.DependencyFolder)\FTDIDrivers_Setup\dpinst-amd64.exe"
                  InstallCommand="/s /se"
                  Compressed="yes"/>
            <!--VC++ Redistributable required to ensure the ADE installer executes without errors-->
            <ExePackage Id="VCRedistributableInstaller"
                        SourceFile="$(var.DependencyFolder)\VC_redist.x64.exe"
                        InstallCommand="/quiet /norestart"
                        Compressed="yes" />
<ExePackage Id="VCRedistributable2010Installer"
                        SourceFile="$(var.DependencyFolder)\VCREDIST_2010_x64.exe"
                        InstallCommand="/quiet /norestart"
                        Compressed="yes" />
            <MsiPackage Id="LicenseGeneratorInstaller"
                        SourceFile="$(var.ReleaseFolder)\!(loc.CULTURE)\FactoryToolsInstall.msi"
                        Compressed="yes"
                        DisplayInternalUI="yes" />
            <ExePackage Id="AccessDatabaseEngineInstaller"
                        SourceFile="$(var.DependencyFolder)\AccessDatabaseEngine_X64.exe"
                        InstallCommand="/quiet"
                        Compressed="yes" />
                                
        </Chain>

Isto é o que vejo no arquivo de log:

  • [1740:173C][2024-11-29T12:25:25]i305: Carga útil adquirida verificada: FTDIDriversInstaller no caminho: C:\ProgramData\Package Cache.unverified\FTDIDriversInstaller, movendo para: C:\ProgramData\Package Cache\A6D6831A4A097BD47AF267727A4AD6B38B14CDE3\dpinst-amd64.exe.
  • [1740:173C][2024-11-29T12:25:26]i304: Carga útil existente verificada: VCRedistributableInstaller no caminho: C:\ProgramData\Package Cache\BA92A00F0F55DCAE85C1BBD098EFE606BD080B3C\VC_redist.x64.exe.
  • [1740:173C][2024-11-29T12:25:26]i304: Carga útil existente verificada: VCRedistributable2010Installer no caminho: C:\ProgramData\Package Cache\027D0C2749EC5EB21B031F46AEE14C905206F482\VCREDIST_2010_x64.exe.
  • [1740:173C][2024-11-29T12:25:29]i304: Carga útil existente verificada: SQL2017Express no caminho: C:\ProgramData\Package Cache\E0A5A388255244F1F5EB2FBF46BDC7292F7E3D8E\Redist\SQLEXPR_x64_ENU.exe.
  • [1740:173C][2024-11-29T12:25:30]i304: Carga útil existente verificada: PharmSpecInstaller no caminho: C:\ProgramData\Package Cache{04E45023-61F9-47AB-8E79-D9A2FE234FC8}v3.5.33\PharmSpec.msi.
  • [1740:173C][2024-11-29T12:25:33]i304: Carga útil existente verificada: AccessDatabaseEngineInstaller no caminho: C:\ProgramData\Package Cache\277EA5EBCD18B8B98D82C9DC53399B4FE864CA51\AccessDatabaseEngine_X64.exe.
  • [1740:1748][2024-11-29T12:25:33]i301: Aplicando pacote de execução: FTDIDriversInstaller, ação: Instalar, caminho: C:\ProgramData\Package Cache\A6D6831A4A097BD47AF267727A4AD6B38B14CDE3\dpinst-amd64.exe, argumentos: '"C:\ProgramData\Package Cache\A6D6831A4A097BD47AF267727A4AD6B38B14CDE3\dpinst-amd64.exe" /q /se'
  • [1740:1748][2024-11-29T12:25:33]e000: Erro 0x80000000: O processo retornou o erro: 0x80000000
  • [1740:1748][2024-11-29T12:25:33]e000: Erro 0x80000000: Falha ao executar o pacote EXE.
  • [0F88:1444][2024-11-29T12:25:33]e000: Erro 0x80000000: Falha ao configurar o pacote EXE por máquina.
  • [0F88:1444][2024-11-29T12:25:33]i319: Pacote de execução aplicado: FTDIDriversInstaller, resultado: 0x80000000, reinicialização: Nenhum
  • [0F88:1444][2024-11-29T12:25:33]e000: Erro 0x80000000: Falha ao executar o pacote EXE.
  • [1740:1748][2024-11-29T12:25:33]i351: Removendo pacote em cache: FTDIDriversInstaller, do caminho: C:\ProgramData\Package Cache\A6D6831A4A097BD47AF267727A4AD6B38B14CDE3\
c#
  • 1 respostas
  • 28 Views
Martin Hope
nikhil
Asked: 2024-11-14 14:07:21 +0800 CST

Restaurar o banco de dados do backup com a opção NoRecovery está travando no estado de recuperação [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
Banco de dados no servidor SQL em modo de recuperação (3 respostas)
Fechado há 13 horas .

Estou tentando restaurar o banco de dados de um backup completo ( .fbk) e um backup rápido ( .qbk). Nessa sequência, quando se trata de

USE MASTER 
RESTORE DATABASE [" + DB_NAME + "] 
FROM DISK = \'" + BackupFile_Txt.Text + "\' WITH NORECOVERY";

declaração, o banco de dados está travado no estado de recuperação.

Ao ver a exceção interna, ele diz

ALTER DATABASE não é permitido enquanto um banco de dados está no estado de Restauração.
A instrução ALTER DATABASE falhou.

Quando abro o SSMS, ele diz "Restaurando" no banco de dados.

Entretanto, quando tento apenas a .fbkopção de backup completo ( ), ele restaura bem (nesse caso, está usando "Com recuperação").

Veja a condição else if no método WriteFile.

private void WriteFile()
{
    try
    {
        // Creates Restore.sql file.
        string strTSQLFile = Environment.CurrentDirectory + "\\Restore.sql";
        FileInfo File = new FileInfo(strTSQLFile);

        StreamWriter Writer = File.CreateText();

        // Write open database  
        string strTemp;
        Writer.WriteLine("ALTER DATABASE [" + DB_NAME + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
        Writer.WriteLine("Go");

        if (Complete_Opt.Checked == true)           // Full restore
        {
            strTemp = "USE MASTER RESTORE DATABASE [" + DB_NAME + "] FROM DISK = \'" + BackupFile_Txt.Text + "\' WITH RECOVERY";
            Writer.WriteLine(strTemp);
        }
        else if (Differential_Opt.Checked == true)  // Quick restore
        {
            strTemp = "USE MASTER RESTORE DATABASE [" + DB_NAME + "] FROM DISK = \'" + BackupFile_Txt.Text + "\' WITH NORECOVERY";
            Writer.WriteLine(strTemp);
            Writer.WriteLine("GO");
            Writer.WriteLine("WAITFOR DELAY '00:00:10'");
            Writer.WriteLine("GO");
            Writer.WriteLine("ALTER DATABASE [" + DB_NAME + "] SET MULTI_USER");
            Writer.WriteLine("GO");
            Writer.WriteLine("ALTER DATABASE [" + DB_NAME + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
            Writer.WriteLine("Go");

            strTemp = "USE MASTER RESTORE DATABASE [" + DB_NAME + "] FROM DISK = \'" + txt_Quick.Text + "\' WITH RECOVERY";
            Writer.WriteLine(strTemp);
        }

        Writer.WriteLine("GO");
        Writer.WriteLine("ALTER DATABASE [" + DB_NAME + "] SET MULTI_USER");
        Writer.WriteLine("GO");

        Writer.WriteLine("USE PharmSpecDB");
        Writer.WriteLine("GO");

        Writer.WriteLine("IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'D_TRG_TestResults')");
        Writer.WriteLine("BEGIN");
        Writer.WriteLine("DROP TRIGGER D_TRG_TestResults");
        Writer.WriteLine("END");
        Writer.WriteLine("GO");

        Writer.WriteLine("CREATE TRIGGER D_TRG_TestResults ON tblTestResults WITH ENCRYPTION INSTEAD OF DELETE AS BEGIN raiserror (50003,14,1)  END");
        Writer.WriteLine("GO");

        Writer.WriteLine("IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'D_TRG_SampleIDParameter')");
        Writer.WriteLine("BEGIN");
        Writer.WriteLine("DROP TRIGGER D_TRG_SampleIDParameter");
        Writer.WriteLine("END");
        Writer.WriteLine("GO");

        Writer.WriteLine("CREATE TRIGGER D_TRG_SampleIDParameter ON tblSampleIDParameter WITH ENCRYPTION INSTEAD OF DELETE AS BEGIN raiserror (50003,14,1)   END");
        Writer.WriteLine("GO");

        Writer.WriteLine("IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'D_TRG_TestRun')");
        Writer.WriteLine("BEGIN");
        Writer.WriteLine("DROP TRIGGER D_TRG_TestRun");
        Writer.WriteLine("END");
        Writer.WriteLine("GO");

        Writer.WriteLine("CREATE TRIGGER D_TRG_TestRun ON tblTestRun WITH ENCRYPTION INSTEAD OF DELETE AS BEGIN raiserror (50003,14,1) END");
        Writer.WriteLine("GO");

        Writer.WriteLine("IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'D_TRG_ReviewApprove')");
        Writer.WriteLine("BEGIN");
        Writer.WriteLine("DROP TRIGGER D_TRG_ReviewApprove");
        Writer.WriteLine("END");
        Writer.WriteLine("GO");

        Writer.WriteLine("CREATE TRIGGER D_TRG_ReviewApprove ON tblReviewApprove WITH ENCRYPTION INSTEAD OF DELETE AS BEGIN raiserror (50003,14,1) END");
        Writer.WriteLine("GO");

        Writer.WriteLine("IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'D_TRG_ActiveParamValues')");
        Writer.WriteLine("BEGIN");
        Writer.WriteLine("DROP TRIGGER D_TRG_ActiveParamValues");
        Writer.WriteLine("END");
        Writer.WriteLine("GO");

        Writer.WriteLine("CREATE TRIGGER D_TRG_ActiveParamValues ON tblActiveParamValues WITH ENCRYPTION INSTEAD OF DELETE AS BEGIN raiserror (50003,14,1) END");
        Writer.WriteLine("GO");

        Writer.WriteLine("IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'D_TRG_ActivityLogger')");
        Writer.WriteLine("BEGIN");
        Writer.WriteLine("DROP TRIGGER D_TRG_ActivityLogger");
        Writer.WriteLine("END");
        Writer.WriteLine("GO");

        Writer.WriteLine("CREATE TRIGGER D_TRG_ActivityLogger ON tblActivityLogger WITH ENCRYPTION INSTEAD OF DELETE AS BEGIN raiserror (50003,14,1) END");
        Writer.WriteLine("GO");

        Writer.WriteLine("EXEC sp_revokedbaccess 'PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_grantdbaccess  'PharmSpecUsr','PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember 'db_owner','PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember  'db_accessadmin','PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember  'db_datareader' ,'PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember 'db_datawriter ', 'PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember 'db_ddladmin', 'PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember 'db_securityadmin', 'PharmSpecUsr'");
        Writer.WriteLine("EXEC sp_addrolemember 'db_backupoperator','PharmSpecUsr'");
        Writer.WriteLine("GO");

        Writer.Close();
    }
    catch (Exception Exc)
    {
        throw Exc;
    }
}

Estou executando este SQL a partir do código C# da seguinte maneira:

try
{
    string strTSQLFile = Environment.CurrentDirectory + "\\Restore.sql";

    if (!File.Exists(strTSQLFile))
    {
        throw new FileNotFoundException();
    }

    using (StreamReader srSQL = new StreamReader(strTSQLFile))
    {
        string sqlLine;
        StringBuilder sqlString = new StringBuilder();

        while (!srSQL.EndOfStream)
        {
            sqlLine = srSQL.ReadLine();

            if (string.IsNullOrEmpty(sqlLine) == false)
            {
                // We don't actually execute the "GO" lines but can use them to determine when to call the executenonquery function
                if (string.Compare(sqlLine, "GO", true) == 0)
                {
                    // Make sure we have something to execute
                    if (string.IsNullOrEmpty(sqlString.ToString()) == false)
                    {
                        ServerActionResult.ConnectionContext.ExecuteNonQuery(sqlString.ToString());
                        System.Diagnostics.Debug.WriteLine(sqlString);
                    }

                    sqlString.Clear();
                }
                // Add the next line to the stringbuilder object
                else
                {
                    sqlString.AppendLine(sqlLine);
                }
            }
        }
    }
}
catch (Exception exc)
{
    throw exc;
}

Depuração:

Ao dizer System.Diagnostics.Debug.WriteLine(sqlString);isso imprime:

ALTER DATABASE [PharmSpecDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

USE MASTER RESTORE DATABASE [PharmSpecDB] FROM DISK = 'C:\PharmBackup\Backup\PharmSpecDB_13-Nov-2024-12-42-57-717_Full.Fbk' WITH NORECOVERY
 WAITFOR DELAY '00:00:10'
                                                

EDITAR:

Com este comentário e o que ele diz online "Para restaurar o banco de dados e colocá-lo online para que os usuários possam se conectar, você pode usar a instrução RESTORE DATABASE com a opção WITH RECOVERY". Estou tentando algo assim,

strTemp = "USE MASTER RESTORE DATABASE [" + DB_NAME + "] FROM DISK = \'" + BackupFile_Txt.Text + "\' WITH NORECOVERY";
Writer.WriteLine(strTemp);
Writer.WriteLine("Go");
 strTemp = "USE MASTER RESTORE DATABASE [" + DB_NAME + "] FROM DISK = \'" + txt_Quick.Text + "\' WITH RECOVERY";
Writer.WriteLine(strTemp);
Writer.WriteLine("Go");

Fazer isso é reclamar,

"O backup de log ou diferencial não pode ser restaurado porque nenhum arquivo está pronto para avanço.\r\nRESTORE DATABASE está sendo encerrado de forma anormal.\r\nContexto do banco de dados alterado para 'master'."

c#
  • 1 respostas
  • 40 Views
Martin Hope
nikhil
Asked: 2024-11-08 17:29:33 +0800 CST

O Wix não instala o novo pacote exe após o pacote antigo ser removido

  • 5

Estou tentando desinstalar o SqlServer 2017 e instalar o SqlServer 2022. Ele desinstala o SqlServer 2017, mas nunca instala o 2022. Por favor, ajude.

Tenho uma classe chamada RemoveSql2017.cs que é a seguinte:

 public class RemoveSQL2017
    {
        const string UNINSTALL_SQL_2017 = "/Action=Uninstall /INSTANCENAME=PHARMSPEC /FEATURES=SQL /QS /HIDECONSOLE";
        const string sqlFile = "DetachPharmSpecDB.sql";
        const string DB_INSTANCE = "PHARMSPEC";
        const int COMMAND_LINE_WAIT = 10000;
        private static WixBootstrapper _bootstrapper;
        const string registryKey = @"SOFTWARE\HIAC\PharmSpec\Database";
        const string subKeyValue = "DataPath";

        public RemoveSQL2017(WixBootstrapper bootstrapper)
        {
            _bootstrapper = bootstrapper;
        }

        public void Remove(string bootStrapFolder, string dataFilePath)
        {
            CreateDetachSQLFile();
            CopyFiles(dataFilePath);
            UninstallSQL(bootStrapFolder);
            DeleteDBRegistryPath();
        }
        public static void UninstallSQL(string bootstrapFolder)
        {
            try
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Beginning UninstallSQL; bootstrapFolder=" + bootstrapFolder);
                Process process = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo(bootstrapFolder + "//SQL2017//setup.exe", UNINSTALL_SQL_2017);
                process.StartInfo = startInfo;
                process.Start();
                process.WaitForExit();
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Completing UninstallSQL; bootstrapFolder=" + bootstrapFolder);
            }
            catch (Exception e)
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Error in UninstallSQL:\n " + e.ToString());
                throw (e);
            }
        }
        public static void CopyFiles(string dataFilePath)
        {
            try
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Beginning CopyFiles; dataFilePath=" + dataFilePath + "  tempDBFilePath=" + Globals.tempDBFilePath);
                File.Copy(Path.Combine(dataFilePath, Globals.MDF_FILE), Path.Combine(Globals.tempDBFilePath, Globals.MDF_FILE));
                File.Copy(Path.Combine(dataFilePath, Globals.LDF_FILE), Path.Combine(Globals.tempDBFilePath, Globals.LDF_FILE));
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Completing CopyFiles; dataFilePath=" + dataFilePath + "  tempDBFilePath=" + Globals.tempDBFilePath);
            }
            catch (Exception e)
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Error in CopyFiles:\n " + e.ToString());
            }
        }
        public static void DetachDB(string sqlFilePath)
        {
            try
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Beginning DetachDB; sqlFilePath=" + sqlFilePath);
                string command = string.Format("-S .\\{0} -E -i \"{1}\"", DB_INSTANCE, sqlFilePath);
                ProcessStartInfo info = new ProcessStartInfo("sqlcmd", command);
                info.UseShellExecute = false;
                info.CreateNoWindow = false;
                info.WindowStyle = ProcessWindowStyle.Hidden;
                Process proc = new Process();
                proc.StartInfo = info;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.Start();
                string outputD = proc.StandardOutput.ReadToEnd();
                if (proc.WaitForExit(COMMAND_LINE_WAIT))
                {
                    _bootstrapper.Engine.Log(LogLevel.Verbose, outputD);
                }
                else
                {
                    _bootstrapper.Engine.Log(LogLevel.Verbose, "Process timeout in DetachDb");
                }
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Completing DetachDB; sqlFilePath=" + sqlFilePath);
            }
            catch (Exception e)
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "Error in DetachDB:\n " + e.ToString());
                throw (e);
            }
        }
        public static void CreateDetachSQLFile()
        {
            try
            {
                string sqlFilePath = Path.Combine(Path.GetTempPath(), sqlFile);
                var sqlScript = new StringBuilder();
                sqlScript.AppendLine("GO");
                sqlScript.AppendLine("IF EXISTS (SELECT * FROM sysdatabases WHERE name = N'PharmSpecDB')");
                sqlScript.AppendLine("use PharmSpecDB");
                sqlScript.AppendLine("DROP SCHEMA PharmSpecUsr");
                sqlScript.AppendLine("DROP USER PharmSpecUsr");
                sqlScript.AppendLine("use master");
                sqlScript.AppendLine("EXEC sp_detach_db 'PharmSpecDB'");
                sqlScript.AppendLine("GO");
                sqlScript.AppendLine("IF EXISTS (SELECT * FROM syslogins WHERE name = N'PharmSpecUsr')");
                sqlScript.AppendLine("DROP LOGIN PharmSpecUsr");
                sqlScript.AppendLine("GO");
                using (StreamWriter sw = new StreamWriter(sqlFilePath))
                {
                    sw.Write(sqlScript.ToString());
                }
                DetachDB(sqlFilePath);
            }
            catch (Exception e)
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "error in CreateDetachSQLFile:\n " + e.ToString());
                throw (e);
            }
        }

        public static void DeleteDBRegistryPath()
        {
            try
            {
                using (RegistryKey key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
                {
                    RegistryKey subkey = key.OpenSubKey(registryKey, true);
                    if (subkey != null)
                    {
                        subkey.DeleteValue(subKeyValue);
                    }           
                }
            }
            catch (Exception e)
            {
                _bootstrapper.Engine.Log(LogLevel.Verbose, "error in DeleteDBRegistryPath:\n" + e.ToString());
            }
        }

Estou chamando essa classe da seguinte maneira: consigo ver o SqlServer 2017 sendo desinstalado.

 if (Bootstrapper.Engine.StringVariables["PreviousVersion"].CompareTo("3.5.99") <= 0 &&
               Bootstrapper.Engine.StringVariables["SqlInstanceKeyFound64"] == "1")
                {
                    RemoveSQL2017 removeSQL = new RemoveSQL2017(Bootstrapper);
                    removeSQL.Remove(Bootstrapper.Engine.StringVariables["DB2017SETUP"], Bootstrapper.Engine.StringVariables["2017DBDataPath"]);
                    Bootstrapper.Engine.StringVariables["OLDDBDATAPATH"] = Globals.tempDBFilePath;
                    Bootstrapper.Engine.StringVariables["INSTALLSQL"] = "1";
                }

Tenho um SqlServer.wxi no qual as chaves de registro e o arquivo exe são os seguintes. Antes de remover o SqlServer2017, isso é o que está no registro,

Registro

SqlServer.wxi

<Variable Name="SqlInstanceKeyFound" Value="0"/>
        <Variable Name="SqlInstanceKeyFound64" Value="0"/>
<util:RegistrySearch
          Id="SqlInstanceKeyFound64"
          Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" Value="PHARMSPEC"
          Result="exists" Variable="SqlInstanceKeyFound64" Win64="yes"/>
        <util:RegistrySearch
          Id="SqlInstanceKey64"
          Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" Value="PHARMSPEC"
          Variable="SqlInstanceKey64" After="SqlInstanceKeyFound64" Condition="SqlInstanceKeyFound64" Win64="yes" />
        <util:RegistrySearch
          Id="SqlInstanceFound64"
          Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SqlInstanceKey64]"
          Result="exists" Variable="SqlInstanceFound64" After="SqlInstanceKey64" Condition="SqlInstanceKeyFound64" Win64="yes" />
        <util:RegistrySearch
          Id="SqlVersion64"
          Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SqlInstanceKey64]\Setup" Value="Version"
          Variable="SqlVersion64" After="SqlInstanceKey64" Condition="SqlInstanceFound64" Win64="yes" />

 <PackageGroup Id="SQL2022Express">
      <ExePackage Id="SQL2022Express"
              DisplayName="SQL Server 2022 Express"
              Cache="yes"
              Compressed="no"
              PerMachine="yes"
              Permanent="no"
              Vital="yes"
              DetectCondition="SqlInstanceFound64"
              InstallCondition="INSTALLSQL=1"
              Name="Redist\SQLEXPR_x64_!(loc.LANG).exe"
              SourceFile="$(var.DependencyFolder)\SQLEXPR_x64_!(loc.LANG).exe"
              InstallCommand="/ACTION=Install /IACCEPTSQLSERVERLICENSETERMS [SQLQUIET] /HIDECONSOLE /FEATURES=SQLEngine /UpdateEnabled=0 /INSTANCENAME=PHARMSPEC /SQLSYSADMINACCOUNTS=Builtin\Administrators /SQLSVCACCOUNT=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /SECURITYMODE=SQL /SAPWD=[SAPASSWORD] /NPENABLED=1 /TCPENABLED=1 /SKIPRULES=RebootRequiredCheck"
              UninstallCommand="/Action=Uninstall /INSTANCENAME=PHARMSPEC /FEATURES=SQL /QS /HIDECONSOLE">
        <ExitCode Value ="3010" Behavior="forceReboot" />
      </ExePackage>
    </PackageGroup>

No log está mostrando o seguinte:

  • [0EE8:0EEC][2024-11-08T14:09:13]i000: Definindo a variável numérica 'SqlInstanceFound64' para o valor 1
  • [0EE8:0EEC][2024-11-08T14:09:13]i052: A condição 'SqlInstanceFound' é avaliada como falsa.
  • [0EE8:0EEC][2024-11-08T14:09:13]i052: A condição 'SqlInstanceFound64' é avaliada como verdadeira.
  • [0EE8:0EEC][2024-11-08T14:09:13]i000: Definindo variável de string 'SqlVersion64' para o valor '14.0.1000.169'
  • [0EE8:0EEC][2024-11-08T14:09:13]i101: Pacote detectado: SQL2022Express, estado: Presente, em cache: Nenhum
  • [0EE8:0EEC][2024-11-08T14:09:29]i052: A condição 'INSTALLSQL=1' é avaliada como verdadeira.
  • [0EE8:0EEC][2024-11-08T14:09:29]w321: Ignorando o registro de dependência em pacote sem provedores de dependência: SQL2022Express
  • [0EE8:0EEC][2024-11-08T14:09:29]i052: A condição 'INSTALLSQL=0' é avaliada como falsa.
wix
  • 1 respostas
  • 11 Views
Martin Hope
nikhil
Asked: 2024-10-09 23:53:42 +0800 CST

ExecuteNonQuery lançando uma exceção "Falha na execução da consulta do banco de dados SQL. O SQL Server pode não estar em execução"

  • 5

Estou tentando executar um arquivo de script SQL chamando

ExecuteNonQuery(somefile.sql) 

e eu recebo uma exceção

Falha na execução da consulta do banco de dados SQL. O servidor SQL pode não estar em execução

Por favor ajude.

Eu tenho um método que executa alguns .sqlarquivos em C#. Ao executar o primeiro arquivo, ele funciona bem. Mas quando ele tenta executar o próximo arquivo (veja a condição else no ExecuteFileBasedOnSequencemétodo), ele lança a exceção. Eu tentei executar o SQL Script no SQL Server e ele funciona muito bem.

EDITAR:

Esta é a exceção interna:

ERRO [42000] [Microsoft][Driver ODBC SQL Server][SQL Server]Sintaxe incorreta perto de 'Go'

Mas o script funciona bem quando executado no SQL Server.

Aqui está o código C#:

private void ExecuteFileBasedOnSequence(string fileToExecute, bool executeSQLBySequence = true)
{
    m_DBConnection.BeginTransaction();

    if (executeSQLBySequence)
    {
        // Read each line of the file into a stringbuilder object to be executed individually (may throw, should just pitch out of this function)
        using (StreamReader srSQL = new StreamReader(fileToExecute))
        {
            // Read each line of the file into a stringbuilder object to be executed individually (may throw, should just pitch out of this function)
            string sqlLine;

            StringBuilder sqlString = new StringBuilder();

            while (!srSQL.EndOfStream)
            {
                sqlLine = srSQL.ReadLine();

                if (string.IsNullOrEmpty(sqlLine) == false)
                {
                    // We don't actually execute the "GO" lines but can use them to determine when to call the executenonquery function
                    if (string.Compare(sqlLine, "GO", true) == 0)
                    {
                        // Make sure we have something to execute
                        if (string.IsNullOrEmpty(sqlString.ToString()) == false)
                        {
                            m_DBConnection.ExecuteNonQuery(sqlString.ToString());
                        }

                        sqlString.Clear();
                    }
                    // Add the next line to the stringbuilder object
                    else
                    {
                        sqlString.AppendLine(sqlLine);
                    }
                }
            }
        }
    }
    else
    {
        using (StreamReader srSQL = new StreamReader(fileToExecute))
        {
            if (m_DBConnection != null)
            {
                m_DBConnection.Open();
                m_DBConnection.ExecuteNonQuery(srSQL.ReadToEnd()); //THIS ONE FAILS.
            }
        }
    }

    m_DBConnection.CommitTransaction();
}

Estou chamando as funções da seguinte maneira:

// This one works 
ExecuteFileBasedOnSequence(@"Database\UpdateTriggersToSQL2017.sql");

// This one is failing    
ExecuteFileBasedOnSequence(@"Database\UpgradePharmSpecScripts.sql", false); 

Aqui está o arquivo SQL com falha ( UpgradePharmSpecScripts.sql):

Use PharmSpecDB
Go

--PC1725E-590

IF NOT EXISTS ( SELECT 23 FROM [PharmSpecDB].[dbo].[tblActivityLogMaster] WHERE Lower(strActivityLog) Like 'user rights%' AND LOWER(strActivityLogDesc) Like 'user rights%')
Begin
ALTER TABLE [PharmSpecDB].[dbo].[tblActivityLogMaster] DISABLE TRIGGER I_TRG_ACTIVITYLOGMASTER  
Insert into [PharmSpecDB].[dbo].[tblActivityLogMaster](strActivityLog,bDeleted,strActivityLogDesc) values ('User rights modified', 0, 'User rights modified')
ALTER TABLE [PharmSpecDB].[dbo].[tblActivityLogMaster] ENABLE TRIGGER I_TRG_ACTIVITYLOGMASTER
End

Editar: conforme sugerido, removi a linha Goafter Use PharmSpecno script e recebo um novo erro:

ExecuteNonQuery: A propriedade de texto do comando não foi inicializada

c#
  • 1 respostas
  • 77 Views
Martin Hope
nikhil
Asked: 2023-09-19 22:09:35 +0800 CST

Pandas inserem uma linha em branco após cada linha no Excel [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
Pandas Python inserem linhas vazias após cada linha (6 respostas)
Fechado há 9 horas .

Novo no Pandas em primeiro lugar. Estou usando o código a seguir para gravar em um arquivo Excel usando Pandas. Por favor, veja a linha worksheet.write(0, col_num, value, header_format). A questão é: como posso inserir uma linha em branco após cada linha. Por exemplo, eu quero algo como

Col1 Col2 Col3 Col4   (This is the Header)
--------------Blank row
C1    C2   C3   C4
--------------Blank row
C1    C2   C3   C4
--------------Blank row
C1    C2   C3   C4

Isso é o que eu tenho

def create_excel_with_format(headers,values,full_file_name_with_path):
   
   df = pd.DataFrame(data=values,columns=headers)
   with pd.ExcelWriter(full_file_name_with_path) as writer:
       df.to_excel(writer, index=False)

   workbook  = writer.book
   worksheet = writer.sheets['Sheet1']
   #font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
   header_format = workbook.add_format({
        'bold': False,
        'border': False,
        'text_wrap': True})
   
   for col_num, value in enumerate(df.columns.values):
        worksheet.write(0, col_num, value, header_format)

   font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 13})
   worksheet.set_row(0, None, font_fmt)
python
  • 1 respostas
  • 33 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve