"Referensi yang belum terselesaikan untuk Pengguna" setelah mengimpor sebagai proyek VS DB

11

Saya baru saja mengimpor database produksi SQL Server 2008r2 yang ada ke proyek database VS 2013.

Saya sekarang mendapatkan sejumlah kesalahan di sepanjang baris

Error       SQL71501: User: [mydbuser] has an unresolved reference to Login [mydbuser].

Saya tidak benar-benar membutuhkan proyek VS DB saya untuk mengelola pengguna, tetapi saya khawatir bahwa itu akan mencoba untuk menghapus mereka saat digunakan jika mereka tidak ada di sana.

File itu sendiri dihasilkan sebagai

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

atau

CREATE USER [mydomainuser] FOR LOGIN [MYDOMAIN\mydomainuser];

Penanda kesalahan menunjukkan bahwa itu khusus untuk Login . Karena itu adalah objek tingkat sistem, saya dapat memahaminya karena berada di luar ruang lingkup proyek db.

Apakah saya lebih suka mengubah semuanya?

CREATE USER [mydbuser] WITHOUT LOGIN;

atau tambahkan CREATE LOGINklausa ke awal setiap file?

Menghapus referensi login tampaknya lebih sederhana dan menghapus pengguna sekaligus adalah yang paling sederhana.

Saya ingin memastikan bahwa saya menggunakan alat seperti yang dimaksudkan. Apakah akan ada masalah dalam mempublikasikan kembali semua yang kembali ke produksi? Apa prosedur yang tepat untuk menambahkan pengguna / login melalui proyek?

Greg
sumber
1
Saya hanya memperhatikan bahwa itu tidak terjadi untuk semua pengguna. Mereka semua kebetulan adalah pengguna SQL, dan beberapa dinonaktifkan (meskipun yang lain tidak). Adakah ide untuk mulai mencari perbedaan?
Greg

Jawaban:

9

Cara termudah adalah tidak mengelola pengguna melalui ssdt (kebanyakan orang tidak). Jadi Anda bisa menghapusnya dan tidak menggunakan login atau pengguna.

Ada tiga cara:

  • opsi baru untuk mengabaikan pengguna / login
  • tulis kontributor penyebaran untuk menarik mereka keluar
  • gunakan kontributor penyebaran saya http://agilesqlclub.Codeplex.com

Ed

Ed Elliott
sumber
Tautan Anda di sini juga cukup membantu: blogs.msdn.com/b/ssdt/archive/2015/02/23/…
Greg
1
Bisakah Anda menguraikan "opsi baru untuk mengabaikan pengguna / login"?
Yawar Murtaza
@YawarMurtaza dba.stackexchange.com/a/150092/117350
Douglas Gaskell
9

Saya memiliki masalah yang sama dan menemukan tautan ini

Pengguna memiliki referensi yang belum terselesaikan untuk Login

Jika Anda membuat login khusus aplikasi (yang harus Anda lakukan) maka Anda akan menemukan kesalahan ini ketika mencoba membangun solusi Anda. Untuk memperbaiki kesalahan ini, pilih sertakan jenis objek 'Non-Aplikasi-cakupan' dalam opsi (ikon roda gigi di atas) ketika Anda melakukan perbandingan skema (klik kanan proyek database untuk menemukan Bandingkan Skema). Anda kemudian dapat mengimpor login ke proyek reguler Anda, dan referensi diurutkan. Catatan: Jika Anda mengklik tab Jenis Objek dan menutup dialog (yang memang berhasil bagi saya), alih-alih gunakan tombol tab hingga Aplikasi-scoped disorot, kemudian tekan panah bawah untuk menyorot Non-Application-scoped dan tekan bilah ruang. Sekarang Anda harus dapat mengklik OK dan melihat login.

SpeedOfSpin
sumber
1
Terima kasih atas tanggapannya! Bisakah Anda memberikan beberapa konteks untuk instruksi ini? Sebagai contoh, apa yang dibandingkan dengan skema terkait dengan kesalahan ini? Di mana tab Jenis Objek? Di mana Anda menekan tombol tab? Dll
Jake
Tentu. Pada dasarnya di VS2013 / 2015 Anda memiliki proyek basis data yang berisi semua SQL Anda untuk solusi yang Anda gunakan. Jika Anda mengklik kanan pada proyek DB itu dan mengklik "Bandingkan Skema" Anda dapat membandingkan apa yang ada di proyek Anda dengan apa yang ada di database Anda. Di bagian atas jendela yang muncul adalah ikon Cog untuk pengaturan. Anda tidak dapat mengklik "Non-Application-Scoped" kotak centang dengan mouse Anda untuk beberapa alasan jadi gunakan tombol tab sebagai gantinya. Tekan tombol tab sekali, lalu tombol panah ke bawah dan kemudian tombol spasi untuk memilihnya. Semoga itu bisa membantu.
SpeedOfSpin
1

Rupanya, masalah ini masih terjadi pada proyek-proyek database VS2017 juga.

Saya sudah berhasil menyelesaikannya dengan terlebih dahulu membuat login dan kemudian membuat pengguna.

    -- Windows Account
    CREATE LOGIN [Domain\Username]
    FROM WINDOWS WITH DEFAULT_LANGUAGE = [us_english];

    GO

    CREATE USER [Domain\Username] FOR LOGIN [Domain\Username];
    GO

    -- Sql Acccount

    CREATE LOGIN [sql_account] WITH PASSWORD = 'Ch@ngeth1spA$swurD'
    GO

    CREATE USER [sql_account]
    FROM LOGIN [sql_account]
    WITH DEFAULT_SCHEMA = dbo

    GO


    -- Then set the sql file Build Action to "Build"
reas
sumber