DBExpress, соединяющий SQL 2008 во время выполнения с Delphi 2009

Я пытаюсь подключиться во время выполнения с SQL Server 2008 с Delphi 2009 с помощью DBExpress, это не работает. Когда я устанавливаю все свойства во время разработки, все работает отлично, но в RunTime я получаю «unknown driver: mssql». Ниже приведен код:


  scnConexao := TSQLConnection.Create(nil);
  scnConexao.DriverName := 'MSSQL';
  scnConexao.ConnectionName := 'MSSQLConnection';
  scnConexao.GetDriverFunc := 'getSQLDriverMSSQL';
  scnConexao.LibraryName := 'dbxmss.dll';
  scnConexao.VendorLib := 'oledb';
  scnConexao.LoginPrompt := False;
  scnConexao.Params.Add('SchemaOverride=sa.dbo');
  scnConexao.Params.Add('HostName=DESKTOP');
  scnConexao.Params.Add('DataBase=DBNAME');
  scnConexao.Params.Add('OS Authentication=False');
  scnConexao.Params.Add('User_Name=UserName');
  scnConexao.Params.Add('Password=Password');
  scnConexao.Params.Add('MSSQL TransIsolation=ReadCommited');
  scnConexao.Open;

Я включил dbxmss.dll в тот же каталог, что и мое приложение, но безрезультатно. Любая помощь будет принята с благодарностью.
Tks


person Pascal    schedule 24.05.2010    source источник
comment
Похоже, этого никто не заметил. Я добавил более общий тег delphi, чтобы было больше просмотров.   -  person Mason Wheeler    schedule 27.05.2010
comment
Я несколько раз читал, что эта проблема была решена путем включения соответствующего модуля в раздел uses, в данном случае я думаю, DBXMsSql. Кстати, AFAIK изменение имени соединения сбрасывает имя драйвера, поэтому нет смысла устанавливать имя драйвера заранее.   -  person Sertac Akyuz    schedule 28.05.2010


Ответы (2)


Попробуй это:

With MSSQLCONNECTION do begin
ConnectionName:= 'SQLCONN';
LoadParamsFromIniFile('file.ini');
try
Connected:=true;
Execute('select * from auto',nil);
except
  on E: Exception do begin
    ShowException(E, nil);
    Halt(1);
  end;
end;

конец;

base.ini:

[SQLCQONN]
bad param
drivername=MSSQL
schemaoverride=%.dbo
vendorlibwin64=sqlncli10.dll
HostName=localhost\sqlexpress
database=sec
user_name=sa
password=Guess
blobsize=-1
localecode=0000
isolationlevel=ReadCommitted
os authentication=False

Подробнее см. http://docwiki.embarcadero.com/RADStudio/en/Setting_Up_TSQLConnection.

person Eugene    schedule 01.06.2012

Мне повезло с Delphi 2007 и MSSQL с этим. Возможно, вам потребуется изменить имя библиотеки DLL, чтобы оно соответствовало версии драйвера MSSQL, используемой в вашей версии Delphi / DBExpress. Кроме того, я использую аутентификацию SQL (также известную как SSPI) вместо имени пользователя и пароля SQL:

FSQLConnection := TSQLConnection.Create(Self);
FSQLConnection.ConnectionName := 'MSSQLConnection';
FSQLConnection.DriverName := 'MSSQL';
FSQLConnection.GetDriverFunc := 'getSQLDriverMSSQL';
FSQLConnection.LibraryName := 'dbxmss30.dll';
FSQLConnection.VendorLib := 'oledb';
FSQLConnection.LoginPrompt:= False;

FSQLConnection.Params.Values['SchemaOverride'] := 'sa.dbo';
FSQLConnection.Params.Values['DriverName'] := 'MSSQL';
FSQLConnection.Params.Values['BlobSize'] := '-1';
FSQLConnection.Params.Values['ErrorResourceFile'] := '';
FSQLConnection.Params.Values['LocaleCode'] := '0000';
FSQLConnection.Params.Values['MSSQL TransIsolation'] := 'ReadCommited';
FSQLConnection.Params.Values['OS Authentication'] := 'True';
FSQLConnection.Params.Values['Prepare SQL'] := 'False';
FSQLConnection.Params.Values['HostName'] := 'MyServerName';
FSQLConnection.Params.Values['DataBase'] := 'MyDatabaseName';
person SOlson    schedule 04.10.2018