Ao usar um banco de dados Firebird 3 (servidor), mas conectando através de uma biblioteca .NET, FirebirdSql.Data.FirebirdClient (eu tentei a V. 7.10.1 e a mais recente 10.3.2), recebo o seguinte erro (neste exemplo, algo está errado na minha declaração drop-constraint):
FirebirdSql.Data.FirebirdClient.FbException: atualização de metadados malsucedida
ALTER TABLE mytable falhou
Nenhuma mensagem para o código de erro 336068738 encontrada.
Tentei copiar o firebird.msg
arquivo para pastas system32
e wow64
pastas. Também tentei usar a variável de ambiente, FIREBIRD_MSG=C:\Program Files\Firebird\Firebird_3_0\firebird.msg
conforme indicado aqui.
Parece que não está funcionando para nenhum erro que eu possa gerar por meio de instruções SQL erradas.
Outro número de erro que recebi, por exemplo, é 336068731.
O código é assim:
if (DbProviderFactories.GetFactory("FirebirdSql.Data.FirebirdClient") is not FirebirdClientFactory fac)
{
throw new InvalidOperationException("FirebirdSql.Data.FirebirdClient.dll could not be loaded.");
}
var host = "localhost";
var user = "SYSDBA";
var pass = "masterkey";
var db = $"c:/databases/DelphiIn2025QuestionmarkQuestionmark.fdb";
var bld = new FbConnectionStringBuilder
{
Charset = "NONE",
DataSource = host,
Database = db,
UserID = user,
Password = pass,
WireCrypt = FbWireCrypt.Enabled
};
using (var con = fac.CreateConnection() as FbConnection)
{
if (con == null)
{
throw new InvalidOperationException("No FbConnection returned...");
}
con.ConnectionString = bld.ConnectionString;
con.Open();
using (var cmd = fac.CreateCommand() as FbCommand)
{
if (cmd == null) { throw new InvalidOperationException("No FbCommand returned..."); }
cmd.Connection = con;
cmd.CommandText = "alter table mytable drop constraint PK_uid";
cmd.ExecuteNonQuery();
}
}