VS DB projesi olarak içe aktarıldıktan sonra “Kullanıcıya çözümlenmemiş başvuru”


11

Mevcut bir SQL Server 2008r2 üretim veritabanını VS 2013 veritabanı projesine aktardım.

Şimdi satırlarında bir takım hatalar alıyorum

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

Kullanıcıları yönetmek için VS DB projeme gerçekten ihtiyacım yok, ancak orada olmasalardı dağıtım sırasında bunları kaldırmaya çalışacağından endişeliyim.

Dosyaların kendisi

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

veya

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

Hata işareti, bunun özellikle Giriş için olduğunu gösterir . Bu sistem düzeyinde bir nesne olduğu için, db projesinin kapsamı dışında olduğunu anlayabiliyorum.

Hepsini değiştirmem tercih edilir mi

CREATE USER [mydbuser] WITHOUT LOGIN;

veya CREATE LOGINher bir dosyanın başına cümle ekleyebilir misiniz?

Giriş referansını kaldırmak daha basit gibi görünüyor ve kullanıcıları tamamen kaldırmak en kolayı olacak.

Aracı tasarlandığı şekilde kullandığımdan emin olmak istiyorum. Bunların tekrar üretime geri gönderilmesinde herhangi bir sorun olacak mı? Proje yoluyla kullanıcı / oturum açma eklemek için uygun prosedür nedir?


1
Sadece tüm kullanıcılar için olmadığını fark ettim. Hepsi SQL kullanıcıları oldu ve bazıları devre dışı bırakıldı (diğerleri olmasa da). Farklılıkları aramaya nereden başlayacağınız konusunda bir fikrin var mı?
Greg

Yanıtlar:


9

En kolay yol, kullanıcıları ssdt üzerinden yönetmektir (çoğu insan bunu yapmaz). Böylece bunları çıkartabilirsiniz ve oturum açma bilgilerini veya kullanıcıları dağıtmayabilirsiniz.

Üç yol vardır:

  • kullanıcıları / giriş bilgilerini yoksaymak için yeni seçenekler
  • onları dışarı çıkarmak için bir dağıtım katkısı yazın
  • dağıtım katılımcımı kullan http://agilesqlclub.Codeplex.com

Ed


Buradaki bağınız
Greg

1
"Kullanıcıları / giriş bilgilerini yoksaymak için yeni seçenekler" konusunu biraz açıklayabilir misiniz?
Yawar Murtaza


9

Aynı sorunu yaşadım ve bu bağlantıyı buldum

Kullanıcının Giriş için çözülmemiş bir referansı var

Uygulamaya özgü girişler oluşturursanız (ki yapmanız gerekir), çözümünüzü oluşturmaya çalışırken bu hatayla karşılaşırsınız. Bu hatayı düzeltmek için, şema karşılaştırması yaparken seçeneklere 'Uygulama Dışı Kapsamlı' nesne türlerini (üstte dişli çark simgesi) dahil et'i seçin (Şema Karşılaştırması'nı bulmak için veritabanı projesine sağ tıklayın). Daha sonra girişleri normal projenize aktarabilirsiniz ve referanslar sıralanır. Not: Nesne Türleri sekmesini tıklatırsanız ve iletişim kutusunu kapatırsa (benim için yaptığı), Uygulama kapsamı vurgulanana kadar sekme tuşunu kullanın, ardından Uygulama Kapsamı dışında seçeneğini vurgulamak için aşağı oka basın ve boşluk çubuğu. Şimdi Tamam'ı tıklayıp giriş bilgilerini görebilmeniz gerekir.


1
Cevap için teşekkürler! Bu talimatlar için bir bağlam sağlayabilir misiniz? Örneğin, şema karşılaştırmasının bu hatayla ne ilgisi var? Nesne Türleri sekmesi nerede? Sekme tuşuna nerede basarsınız? Vb
Jake

Elbette. Temel olarak VS2013 / 2015'te kullandığınız çözüm için tüm SQL'inizi içeren veritabanı projeniz var. Bu DB projesine sağ tıklayıp "Şema Karşılaştır" seçeneğine tıklarsanız, projenizdeki içeriği veritabanınızdaki ile karşılaştırabilirsiniz. Açılan pencerenin üst kısmında ayarlar için bir Dişli çark simgesi bulunur. Herhangi bir nedenle farenizle "Uygulama Dışı Kapsamlı" onay kutusunu tıklayamazsınız, bunun yerine sekme tuşunu kullanın. Sekme tuşuna bir kez basın, ardından aşağı ok tuşuna ve ardından boşluk çubuğuna basarak seçin. Umarım yardımcı olur.
SpeedOfSpin

1

Görünüşe göre, bu sorun VS2017 veritabanı projelerinde de devam ediyor.

İlk olarak giriş bilgilerini ve ardından kullanıcıyı oluşturarak çözmeyi başardım.

    -- 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"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.