9

Zajmuję się tworzeniem aplikacji w formie okna C# zawierającej dane oparte na usługach. kiedy przetestować mojej aplikacji to baza danych działa poprawnie, ale po opublikowaniu i zainstalowaniu programu, gdy program próbuje otworzyć SqlConnection, pojawia się ten błąd:Plik bazy danych nie został skopiowany podczas publikowania, więc zainstalowana aplikacja zgłasza wyjątek.

System.Data.SqlClient.SqlException (0x80131904): Próba dołączyć się automatycznie nazwana baza danych dla pliku C: \ Users \ Behnam \ AppData \ Local \ Apps \ 2.0 \ Data \ 5XVOVXV1.3VG \ M5T04ZK7.QBJ \ tahl..Tion_45c3791d6509222d_0001.0000_be1c7cc05811ecf0 \ Data \ AppData \ TahlilGar.mdf nie powiodło się. Baza danych o tej samej nazwie istnieje lub określony plik nie może zostać otwarty lub znajduje się w udziale UNC.

To mój ConnectionString:

<add name="BA" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf; 
Integrated Security=True;"providerName="System.Data.SqlClient" /> 

Próbowałem również: User Instance= True; ale wynik jest:

Instancja logowania użytkownika flaga nie jest dozwolone w przypadku podłączenia do użytkownika instancji SQL Server. Połączenie zostanie zamknięte.

Jak mogę rozwiązać ten problem?


Edit: Sprawdziłem wspomnianą ścieżkę i nie był mój plik .mdf. więc skopiowałem go z mojego projektu i wszystko działało dobrze. teraz, dlaczego mój plik mdf nie kopiuje podczas publikowania i instalowania w oczekiwanej ścieżce.

+0

Czy decyduje się użyć LocalDB na serwer, na który publikujesz? Czy to inna maszyna? Sądzę, że używałbyś przynajmniej SQL Express na serwerze. LocalDB jest przeznaczony do programowania. –

+0

Czy zainstalowałem opublikowaną aplikację na tym samym komputerze, na którym rozwijam program? również przetestowałem na innym komputerze i ponownie otrzymuję ten sam błąd. – Behnam

+1

Ten link https://msdn.microsoft.com/en-us/library/kzy0fky2.aspx zawiera szczegóły dotyczące włączania i wyłączania pliku do publikowania clickonce. – Kira

Odpowiedz

1

Twój ciąg połączenia wspomina, że ​​wystąpienie SQL Server Express został wykorzystany w maszynie rozwój:

<add name="BA" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf; Integrated Security=True;"providerName="System.Data.SqlClient" /> 

Załóżmy urządzenie rozmieszczenie używa pełnej wersji SQL Server, automatyczne generowanie bazy danych z kodu ma wpływ na rozmieszczenie kontekst od User Instance funkcja obsługiwana tylko w wersji Express.

Oto kroki w celu rozwiązania problemu:

  1. modyfikować swój ciąg połączenia z usunięciem instancji użytkownik części (usunąć User Instance=True jeśli występują).

  2. Wykonaj ręcznie aspnet_regsql.exe, aby załączyć i zarejestrować plik bazy danych/MDF na komputerze zdalnym (jeśli jeszcze tego nie zrobiłeś).

  3. Po przeprowadzeniu migracji bazy danych do instancji serwera SQL na maszynie wdrożeniowej należy upewnić się, że należy zmienić ścieżkę źródła danych i dodać początkowy katalog (np. Nazwę bazy danych) podobny do tego.

    <add name="BA" connectionString="Data Source=SERVERNAME;Initial Catalog=TahlilGar;Persist Security Info=True;User ID=DBUserID;Password=DBPassword;Integrated Security=True;"providerName="System.Data.SqlClient" /> 
    

AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf część działa, gdy baza danych istnieje w lokalnym koncie użytkownika maszyny i aktualnie przy użyciu właściwej instancji przyznano pozwolenie na dołączenie pliku MDF.

Dodatkowe noty od Adam Tuliper:

Jest to potencjalnie problem z konta, które są uruchomione w ramach IIS nie mając dostępu do tego pliku.

Przypisz pełne uprawnienia do tego folderu dla konta usługi sieciowej .

Możesz tymczasowo wypróbować opcję "Wszyscy" i sprawdzić, czy to rozwiązuje problem, , a następnie od tego miejsca.

Upewnij się również, że nie jest używany przez inny serwer WWW (proces explorer/sysinternals może Ci to pokazać).

Referencje:

Attempt to attach an auto-named database for .mdf file failed

The user instance login flag is not supported on this version of SQL Server. The connection will be closed

+0

Mój projekt to aplikacja w systemie Windows, a nie asp.net – Behnam

Powiązane problemy