sql >> Databáze >  >> RDS >> Database

Nastavení atributů připojení ODBC bez nutnosti psát kód

Nedávno se zákazník, který používal náš SQL Server ODBC ovladač k připojení Oracle® na Linuxu k SQL Serveru, zeptal, zda je možné povolit úroveň izolace snímku ze zdroje dat ODBC.

Tuto úroveň izolace můžete povolit nastavením atributu připojení ve volání SQLSetConnectAttr. Tuto metodu však nelze použít, pokud nemáte přístup ke zdrojovému kódu aplikace, jako tomu bylo v případě našeho zákazníka Oracle®.

Alternativně můžete pro nastavení atributů připojení použít mechanismus poskytovaný unixODBC Driver Manager:

DMConnAttr=[atribut ]=hodnota 

Poznámka K nastavení atributů připojení pomocí DMConnAttr potřebujete 1.9.10+ ovladače SQL Server ODBC .

Relevantní atribut a hodnota pro úroveň izolace snímku jsou obsaženy v záhlaví souboru SQL Server sqlncli.h, který je obsažen v distribuci ovladače SQL Server ODBC:

#define SQL_COPT_SS_BASE 1200#define SQL_TXN_SS_SNAPSHOT 0x00000020L#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27)

což nám dává následující řádek k přidání do našeho zdroje dat ODBC:

DMConnAttr=[1227]=\32

1227 je atribut (1200+27) a 32 je hodnota (desetinná hodnota 0x00000020L je 32).

Abychom otestovali správnost našich nastavení:

$ více /etc/odbc.ini[SQLSERVER_SAMPLE]Driver=Easysoft ODBC-SQL ServerServer=myserverPort=50217Database=adventureworksUser=saPassword=p455w0rd$ /usr/local/easysoft/unixODBC/shbin -/isqlSERVER SELECT CASE Transaction_isolation_level WHEN 1 THEN 'ReadUncommitted'WHEN 2 THEN 'ReadCommitted' WHEN 3 THEN 'Repeatable'WHEN 4 THEN 'Serializable' WHEN 5 THEN 'Snapshot' ENDFROMcSPinicRelace.dexet@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@úúuuuuuu. [SQLSERVER_SAMPLE]Ovladač=Easysoft ODBC-SQL ServerServer=myserverPort=50217Database=adventureworksUser=saPassword=p455w0rdDMConnAttr=[1227]=\32$ /usr/local/easysoft/unix_AMPlSQL_SELECT_SKISQL_ShSQL SELECT_sol SQL/bin/ASEqSql SQL SELECT_ENH SQLSERVER/bin/level 1 POTOM 'ReadUncommitted' WHEN 2 THEN 'ReadCommitted' WHEN 3 THEN 'Repeatable'WHEN 4 THEN 'Serializable' WHEN 5 THEN 'Snapshot' ENDFROM sys.dm_exec_sessions where IDSnap =1x 
  1. Vyberte n náhodných řádků z tabulky SQL Server

  2. Jaký je rozdíl mezi spojeními oddělenými čárkami a spojením podle syntaxe v MySQL?

  3. Proces upgradu krok za krokem na R12.2 Upgrade část -2 (hlavní upgrade ovladače pro R12.2.0)

  4. Poskytne UUID jako primární klíč v PostgreSQL špatný výkon indexu?