Vytvoril som aplikáciu c # windows (framework 2.0), ktorá používa databázu MS SQL.
Pri vývoji som použil MS VISUAL STUDIO 2010 a SQL 2008 MANAGEMENT STUDIO.
Môj pripojovací reťazec počas vývoja je:
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=SL;Integrated Security=True");
Všetko funguje dobre ....
Teraz chcem spustiť túto aplikáciu na klientskom systéme.
MS SQL SERVER 2008 je teda v klientskom systéme úspešne nainštalovaný.
Zastavil som služby sql môjho systému a skopíroval súbory .mdf a .ldf z môjho počítača a vložil ich do „c: Databáza“ klienta. Počas behu však prichádza problém.
Chyba špecifická pre sieť alebo inštanciukým nastala vytvorenie spojenia so serverom SQL Server. Server nebol nájdený alebo nebolo dostupné. Overte, či je názov inštancie správny a že SQL Server je nakonfigurovaný tak, aby umožňoval vzdialené pripojenia. (poskytovateľ: SQL Sieťové rozhrania, chyba: 26 - Chyba pri vyhľadávaní servera / inštancie neurčené)
Pripojovacie reťazce, ktoré som už mnohokrát vyskúšal, sú:
SqlConnection con = new SqlConnection("Data Source=.\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True");
SqlConnection con = new SqlConnection("Data Source=.\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass");
SqlConnection con = new SqlConnection("Data Source=.\MSSQLEXPRESS; AttachDbFilename =C:\Database\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
Keď používam User ID=sa;Password=pass
v pripojovacom reťazci dostanem:
autentifikácia zlyhala pre „sa“
Chýbajú mi nejaké kroky alebo robím zle? Prosím, povedzte mi, čo mám robiť po skopírovaní databázy z môjho systému. Aký by mal byť môj pripojovací reťazec v C #?
Vďaka !
odpovede:
2 pre odpoveď č. 1Skopírovali ste iba súbory, ktoré potrebujete priložiťdatabázu do SQLExpressu, pozrite sa na použitie OSQL alebo alternatívne nainštalujte klientske nástroje na počítač, kde máte SQLExpress, a pripojte databázy.
1 pre odpoveď č. 2
Najskôr sa nezabudnite pozrieť Sres “odpoveď.
Ak nepoviete SQL Serveru v pripojovacom reťazci, aby pripojil vašu databázu (s AttachDbFilename
, ako v treťom príklade), musíte urobiť pripútanie, ako povedal.
Čo sa týka vašich troch príkladov pripojovacích reťazcov: všetky fungujú iba za určitých okolností. Možno budete chcieť vyskúšať connectionstrings.com.
Tu sú vaše tri spojovacie reťazce a krátke vysvetlenie ich problémov:
Data Source=.MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True
-> Toto používa aktuálneho používateľa systému Windows, pod ktorým je vaša aplikácia spustená. Aktuálny používateľ systému Windows teda musí mať oprávnenie k databáze na počítači klienta.
Data Source=.MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass
-> Používa sa špeciálny používateľský účet „sa“. Aby to fungovalo, musíte sa ubezpečiť, že sú splnené nasledujúce predpoklady:
- Overenie v zmiešanom režime musí byť nastavené (ak tak neurobíte, máte iba autentifikáciu Windows a „sa“ je používateľské meno autentifikácie SQL Servera)
- je potrebné zadať heslo „sa“ a samozrejme musí byť rovnaké ako na vývojovom stroji.
Ale aj tak to nie je najlepšie riešenie. „sa“ je účet správcu s úplnými povoleniami a vy by ste nemali používať účet správcu na prístup k serveru SQL Server s vašou aplikáciou.
Ak naozaj chcete použiť autentifikáciu SQL Servera (namiesto autentifikácie Windows), je lepšie vytvoriť nový účet s minimálnymi potrebnými oprávneniami, ktoré vaša aplikácia potrebuje.
Data Source=.MSSQLEXPRESS; AttachDbFilename =C:DatabaseSL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
-> rovnaký problém ako pri prvom pripojovacom reťazci (aktuálny používateľ systému Windows musí mať povolenia). Plus, User Instance=True
je potrebné povoliť na serveri SQL Server.
Citácia od connectionstrings.com:
Ak chcete používať funkčnosť inštancie používateľa, ktorú potrebujeteumožniť to na SQL Server. To sa deje vykonaním nasledujúceho príkazu: sp_configure "užívateľské inštancie povolené", "1". Zakázať funkčnosť vykonať sp_configure "užívateľské inštancie povolené", "0".
0 pre odpoveď č. 3
Ste si istý, že názov novej inštancie je „MSSQLEXPRESS“?
Moja inštancia R2 Express sa volá "SQLEXPRESS" (je to vlastne kvôli známej chybe v inštalačné).
Možno budete chcieť skontrolovať, či sa inštancia skutočne volá to, čo si myslíte, že je.