Avatar billede EIHP Juniormester
06. juni 2017 - 13:57 Der er 7 kommentarer og
1 løsning

C# SQL ODBC virker ikke for alle.

Hej

Jeg har et underligt problem.

Jeg har kodet et stykke software, til at hente csv fra SQL til at arbejde med i excel.

Men dette software virker kun for nogen, mens andre skriver den server blev ikke fundet.

Og det er trods at vi sidder på samme fjernskrivebord.

Er der nogen bud på hvad der kan ligge til grund for dette?

Syntes det er mærkeligt at den virker for 3 ud af 8 brugere på samme fjernskrivebord.
Avatar billede arne_v Ekspert
06. juni 2017 - 14:09 #1
Hvad daekker "virker ikke" over? (praecis fejlbesked)
Avatar billede EIHP Juniormester
06. juni 2017 - 14:18 #2
På de 5, der for fejl.

Modtager de dette.
The OdbcConnection returned the following message
ERROR [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server findes ikk
e, eller adgang blev nægtet.
ERROR [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Conne
ct()).
Avatar billede EIHP Juniormester
06. juni 2017 - 14:22 #3
mine connection string, er følgende

OdbcConnection DbConnection = new OdbcConnection("DRIVER={SQL Server Native Client 11.0};server=1.2.3.4;database=GPSLive;UID=EnBruger;Pwd=EtHemmeligtKode0rd;Option=3;");
Brugernavn og kode står altså i C# koden. så det er samme bruger alle logger ind med. Alligevel er det kun 3 brugere på et og samme fjernskrivebord, der kan bruge opret forbindelse.
Avatar billede arne_v Ekspert
06. juni 2017 - 14:53 #4
Hmmm. Ikke nemt at gennemskue.

Er SQLServer konfigureret til baade SQLServer security og integreret security?

Hvad goer Option=3?

Hvorfor ODBC og ikke SqlClient?
Avatar billede EIHP Juniormester
06. juni 2017 - 15:45 #5
Hej Arne

Har prøvet at lave den med både ODBC og SQLClient. samme fejl på 5 brugere.
Jeg har ikke adgang til SQLServeren.

Men jeg kan bruge den på alle computere uden for skrivebordet uden nogen problemer.
Så tænker at det må være noget på fjernskrivebordet der er skyld i, at kun 3 ud af 8 medarbejder kan opret forbindelse.
Avatar billede arne_v Ekspert
06. juni 2017 - 16:08 #6
Jeg vil klart anbefale SqlClient over ODBC.

Og du maa faa en lidt anden fejlbesked med SqlClient.
Avatar billede EIHP Juniormester
07. juni 2017 - 11:04 #7
Nu har jeg ændret det hele til SQL igen. virker stadig kun på 3 ud af 5 brugere.
Som sagt, vi kører alle på det samme fjernskrivebord.

Og login til SQL, er det samme, da det står indskrevet i koden.


Fejl besked:
The SqlConnection returned the following message
Der opstod en netværksrelateret eller forekomstspecifik fejl, da det blev forsøg
t at oprette forbindelse til SQL Server. Serveren blev ikke fundet, eller der va
r ikke adgang til den. Kontroller, at forekomstnavnet er korrekt, og at SQL Serv
er er konfigureret til at tillade fjernforbindelser. (provider: Named Pipes Prov
ider, error: 40 - Der kunne ikke åbnes en forbindelse til SQL Server.)


Her er min kode.
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;

namespace GetUplanlagte
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length>=1)
            {
                Console.WriteLine("Getting SQL data, please wait");
                SqlConnection sqlCon = new SqlConnection("server=;database=;User ID=;Password=");
                try
                {
                    sqlCon.Open();
                }
                catch (SqlException ex)
                {
                    Console.WriteLine("The SqlConnection returned the following message");
                    Console.WriteLine(ex.Message);
                    return;
                }
                String SQLStr;
                string[] formats = new string[] { "yyyyMMdd" };
                String dateString = args[0].ToString();
                DateTime dateValue;
                String ldate = "20170606";

                if (DateTime.TryParseExact(dateString, formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault, out dateValue))
                {
                    ldate = dateValue.ToString("yyyyMMdd");
                }
                else
                {
                    Console.WriteLine("Arguments was not correct date!");
                    return;
                }


                SQLStr = "";

                SqlCommand sqlCmd = new SqlCommand(
                    SQLStr, sqlCon);
                SqlDataReader reader = sqlCmd.ExecuteReader();

                string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
                var directory = System.IO.Path.GetDirectoryName(path);
                string fileName = directory + "\\rådata.csv";
                if (args.Length >= 2)
                {
                    fileName = directory + "\\" + args[1];
                }
                new FileInfo(fileName).Directory.Create();
                StreamWriter sw = new StreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), System.Text.Encoding.Default);
                object[] output = new object[reader.FieldCount];

                int fCount = reader.FieldCount;
                for (int i = 0; i < fCount; i++)
                    output[i] = reader.GetName(i);

                sw.WriteLine(string.Join(",", output));

                while (reader.Read())
                {
                    for (int i = 0; i < fCount; i++)
                    {
                        output[i] = Convert.ToString("\"" + reader[i] + "\"");

                    }
                    sw.WriteLine(string.Join(",", output));
                }

                sw.Close();
                reader.Close();
                sqlCon.Close();
                Console.WriteLine("Data saved!");
                return;
            }
            else
            {
                Console.WriteLine("Arguments not found!");
                return;
            }
            return;
        }
    }
}
Avatar billede EIHP Juniormester
14. august 2017 - 08:57 #8
Har fundet ud af det. af en eller anden grund, kan folk godt kører exe fra den delte mappe, gemme, ændre, slet osv. men det kan ikke køre sql når den kører fra den mappe.

Og jeg har ikke kunne finde en grund i rettighederne, men den er nu placeret i en anden mappe hvor alle har samme rettigheder, og her virker den fint. :S
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester