{"id":450,"date":"2014-04-25T18:00:35","date_gmt":"2014-04-25T16:00:35","guid":{"rendered":"http:\/\/blog.systemconnect.dk\/?p=450"},"modified":"2017-01-27T12:31:28","modified_gmt":"2017-01-27T11:31:28","slug":"%c2%a4%c2%a8%c2%a4-og-andre-maerkelige-tegn-i-c5-ini-paa-klassisk-c5-for-sql","status":"publish","type":"post","link":"https:\/\/scblog.lynge.org\/?p=450","title":{"rendered":"@!\u00a4%&#038;\u00a8^\u00a4%@$ og andre m\u00e6rkelige tegn i c5.ini p\u00e5 Klassisk C5 for SQL"},"content":{"rendered":"<p>Er du faldet over en &#8220;-z@&#8221;- eller en -zzh-parameter i din c5.ini og undrer du dig over hvad den g\u00f8r?<\/p>\n<p>&nbsp;<\/p>\n<p>-z@ er ekstra parametre til SQL-driveren som din Klassiske C5 for SQL\u00a0bruger for at kunne tale med SQL-serveren.<\/p>\n<p>I de gode gamle dage opsatte man et Data Source Name (DSN) under ODBC for at Klassisk C5 til SQL kunne finde ud af at f\u00e5 fat p\u00e5 SQL-serveren. Det var temmelig tr\u00e6ls da man skulle ops\u00e6tte den p\u00e5 hver enkelte PCer.<\/p>\n<p>Efter Klassisk C5 version 2010 er det heldigvis ikke l\u00e6ngere n\u00f8dvendigt. Nu fors\u00f8ger C5 selv at finde den mest egnede driver og bruger den\u00a0&#8220;DSN-less&#8221;\u00a0(som man s\u00e5 smukt kalder det). \u00d8nsker man at se hvilken driver det er, s\u00e5 kan det ses i ODBC-manageren p\u00e5 Driver-fanen.<br \/>\nEnten den\u00a0ODBC-manager\u00a0du p\u00e5 en 32 bits\u00a0Windows\u00a0finder i kontrolpanelet under Administration \/ Datakilder (ODBC) eller den du p\u00e5 en 64 bits Windows finder her: C:\\Windows\\SysWOW64\\odbcad32.exe<br \/>\nSom udgangspunkt v\u00e6lger C5 driveren &#8220;SQL Server&#8221; (som er inkluderet i Windows), men det kan jo v\u00e6re du i stedet \u00f8nsker at bruge en anden? Fx den der f\u00f8lger med den SQL-server du bruger. Hvordan g\u00f8r man s\u00e5 det uden at oprette en DSN i ODBC-manageren og tvinge C5 til at bruge den?<\/p>\n<p>Jo, du angiver s\u00e5m\u00e6nd blot hvilken driver du \u00f8nsker at benytte med &#8220;-z@&#8221;-parameteren, fx en af f\u00f8lgende:<br \/>\n-z@driver=SQL Server<br \/>\n-z@driver=SQL Native Client<br \/>\n-z@driver=SQL Server Native Client 10.0<br \/>\n-z@driver=SQL Server Native Client 11.0<\/p>\n<p>Bem\u00e6rk \u00a0at driverversioner med 1 cifret major\u00a0versions-nummer (major nummeret er det f\u00f8rste talt &#8211; fx tallet 6 i versionen\u00a0&#8220;6.01.7601.17514&#8221;)\u00a0er dem der kommer med Windows, mens dem med 2 eller 4 cifre stammer fra SQL-server-installationer (de hedder typisk ogs\u00e5 &#8220;SQL Server Native Client&#8221;.<\/p>\n<p>Men hvad s\u00e5 &#8211; kan man angive andre\u00a0ting i\u00a0-z@?<\/p>\n<p>Ja &#8211; det afh\u00e6nger af den enkelte driver. Som standard bruger C5-kernen f\u00f8lgende parametre:<\/p>\n<p>-z@AnsiNPW=yes;Auto_Translate=yes;DRIVER={SQL Server};QuotedID=yes;Regional=no;Trusted_Connection=yes<\/p>\n<p>&#8230;og hvad d\u00e6len kan man s\u00e5 bruge det til?<\/p>\n<p>Ja, faktisk er det s\u00e5dan at selv hvis man v\u00e6lger at bruge -zu og -zp for at angive hvilket brugernavn\/kodeord C5 skal tilg\u00e5 SQL databasen med &#8211; fx fordi man ikke \u00f8nsker at hver enkelt bruger skal tilg\u00e5 med sit eget Windows brugernavn, ja s\u00e5 kr\u00e6ver det en s\u00e5kaldt Trusted_Connection. Dvs. at Windows brugeren rent faktisk skal have adgang til SQL-serveren inden det angivne brugernavn og kodeord kan benyttes&#8230; Men det kan jo s\u00e5 lige fixes ved at angive -z@trusted_connection=no<\/p>\n<p>En anden brugbar parameter kan v\u00e6re &#8220;app&#8221; som kan misbruges til at s\u00e6tte applikationsnavnet overfor SQL-serveren. Den bruger det os bekendt ikke til andet end at vise det i Activity Monitorens sessionsliste &#8211; men er man lidt kreativ kan man jo angive brugernavnet i den. S\u00e5 kan man &#8211;\u00a0selv hvis man bruger samme brugernavn\/adgangskode til C5s SQL-adgang &#8211; f\u00e5 oplyst hvilken bruger sessionen tilh\u00f8rer. Fx -z@trusted_connection=no;app=C5_%USERNAME%<\/p>\n<p>Du kan selv Google (eller\u00a0 Binge \ud83d\ude42 )\u00a0andre eksempler hvis du s\u00f8ger efter DSN-less connection.<\/p>\n<p>&nbsp;<\/p>\n<p>Fint nok, men hvad g\u00f8r -zzh s\u00e5?<\/p>\n<p>-zzh bruges til at angive nogle flag til C5-kernen om hvordan den skal &#8220;tale&#8221; med SQL-serveren. Det var prim\u00e6rt noget der blev brugt i gamle dage (f\u00f8r C5 version 2008).<\/p>\n<p>&nbsp;<\/p>\n<p>P.t. kender vi f\u00f8lgende v\u00e6rdier:<\/p>\n<ul>\n<li>1: V\u00e6rdien benyttes ikke l\u00e6ngere til noget<\/li>\n<li>2: Vend betingelsen om i stedet for at bruge &#8220;&gt;=&#8221;<\/li>\n<li>4: Brug index hints til SQL &#8211; se ogs\u00e5 v\u00e6rdien 32<\/li>\n<li>8: Hent data\u00a0igen efter UPDATE\/DELETE\/INSERT<\/li>\n<li>16: Brug FASTFIRSTROW hint. Virker ikke sammen med v\u00e6rdien 4<\/li>\n<li>32: Brug UPDLOCK p\u00e5 SELECTs i TTSer. Kr\u00e6ver at ogs\u00e5 v\u00e6rdierne 4 eller 16 er sat<\/li>\n<li>64: Forhindrer omvendt sortering (dog kun p\u00e5 SYBASE databaser som C5 ikke l\u00e6ngere supporterer)<\/li>\n<li>128: Brug FAST FORWARD cursors hvis TTS ikke er aktiv. Virker kun hvis MS SQL-serveren er version 7 eller nyere. Denne sl\u00e5s automatisk fra i kerne versioner f\u00f8r 4.2.1349 (svarer til C5 2008 sp1) n\u00e5r kernen melder &#8220;Unsupported ODBC driver&#8221;. Den fejl kommer hvis C5-kernen ikke kender ODBC driver-versionen<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Flagene kan kombineres ved at l\u00e6gge dem sammen (dvs. det er bit-flag). S\u00e5 vil man s\u00e6tte flagene 4 og 32, skal man angive -zzh36 i C5.INI. Den v\u00e6rdi er i \u00f8vrigt velegnet til at omg\u00e5s FASTFIRSTROW fejlen med \u00e6ldre C5&#8217;ere p\u00e5 nyere SQL-servere &#8211; se evt. <a href=\"http:\/\/blog.systemconnect.dk\/?p=307\">dette blogindl\u00e6g<\/a> om det.<\/p>\n<p>&nbsp;<\/p>\n<p>Som sagt b\u00f8r flagene ikke bruges\u00a0p\u00e5 C5-version 2008 eller nyere da de automatisk s\u00e6ttes korrekt af kernen\u00a0&#8211; og det b\u00f8r du v\u00e6re opm\u00e6rksom p\u00e5 hvis du opgraderer en \u00e6ldre C5 og har flagene st\u00e5ende i C5.INI. S\u00e5 skal de nemlig lige slettes &#8211; ellers kan de give problemer idet de overstyrer kernens\u00a0standardindstillinger som jo er testet af Microsoft.<\/p>\n<p>&nbsp;<\/p>\n<p>C5 version 2010 k\u00f8rer i \u00f8vrigt som standard med -zzh154. Dvs.<\/p>\n<ul>\n<li>2: Vend betingelsen om i stedet for at bruge &#8220;&gt;=&#8221;<\/li>\n<li>8: Hent data\u00a0igen efter UPDATE\/DELETE\/INSERT<\/li>\n<li>16: Brug FASTFIRSTROW hint<\/li>\n<li>128: Brug FAST FORWARD cursors hvis TTS ikke er aktiv (s\u00e5fremt MS SQL-serveren er version 7 eller nyere)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Nu hvor vi er i gang m\u00e5 vi ogs\u00e5 hellere n\u00e6vne -$USP parameteren, der sl\u00e5r C5UTIL.USP-filen til&#8230; Det er et ekstra lag (til rettelser til USR-laget) som meget sj\u00e6ldent bruges&#8230; Det kan dog bruges til at overvinde en begr\u00e6nsning i C5UTIL.USR-filen &#8211; mere herom i et senere Blog-indl\u00e6g.<\/p>\n<p>-$USP parameteren h\u00f8rer til i samme kategori som -$VAR, -$VAP, -$BUS, -$BUP, -$CUS og\u00a0-$CUP, der dog alle sammen skal efterf\u00f8lges af \/ og partneres udviklingskode til det p\u00e5g\u00e6ldende lag&#8230; Det skal -$USP dog ikke&#8230;<\/p>\n<p>&nbsp;<\/p>\n<p>Bem\u00e6rk i \u00f8vrigt at Klassiske C5&#8217;ere f\u00f8r version 2008 ikke tillod kommentarlinjer (linjer der starter med semikolon &#8211; &#8220;;&#8221; ) i C5.ini. Har du s\u00e5dan en linje vil C5 ganske simpel starte med hj\u00e6lpesystemet for at fort\u00e6lle dig hvilke parametre der er tilladt.<\/p>\n<p>&nbsp;<\/p>\n<p><a title=\"Kernen falder aldrig langt fra applikationen\" href=\"http:\/\/blog.systemconnect.dk\/?p=517\">Se evt. ogs\u00e5 dette indl\u00e6g om -Q og -QX parameteren!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Er du faldet over en &#8220;-z@&#8221;- eller en -zzh-parameter i din c5.ini og undrer du dig over hvad den g\u00f8r? &nbsp; -z@ er ekstra parametre til SQL-driveren som din Klassiske C5 for SQL\u00a0bruger for at kunne tale med SQL-serveren. I &hellip; <a href=\"https:\/\/scblog.lynge.org\/?p=450\">L\u00e6s resten <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37,6,4],"tags":[15,43,13,22,11,54,23,53,14,28,20],"class_list":["post-450","post","type-post","status-publish","format-standard","hentry","category-klassisk-c5","category-klassisk-c5-support","category-klassisk-c5-teknik","tag-business-solutions","tag-c5","tag-damgaard-data","tag-database","tag-dynamics","tag-dynamics-c5","tag-hint","tag-klassisk-c5","tag-microsoft","tag-sql","tag-udokumenteret"],"_links":{"self":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=450"}],"version-history":[{"count":11,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/450\/revisions"}],"predecessor-version":[{"id":1090,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/450\/revisions\/1090"}],"wp:attachment":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}