Bạn chưa giải quyết được tài liệu tham khảo cho người dùng trước khi nhập dưới dạng dự án VS DB


11

Tôi vừa nhập cơ sở dữ liệu sản xuất SQL Server 2008r2 hiện có vào dự án cơ sở dữ liệu VS 2013.

Bây giờ tôi nhận được một số lỗi dọc theo dòng

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

Tôi thực sự không cần dự án VS DB của mình để quản lý người dùng, nhưng tôi lo ngại rằng nó sẽ cố gắng loại bỏ chúng khi triển khai nếu chúng không có ở đó.

Các tệp được tạo như là

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

hoặc là

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

Dấu hiệu lỗi cho thấy rằng nó đặc biệt dành cho Đăng nhập . Vì đó là một đối tượng ở cấp hệ thống, tôi có thể hiểu nó nằm ngoài phạm vi của dự án db.

Có phải tôi muốn thay đổi tất cả thành

CREATE USER [mydbuser] WITHOUT LOGIN;

hoặc thêm CREATE LOGINmệnh đề vào đầu mỗi tập tin?

Xóa tham chiếu đăng nhập dường như đơn giản hơn và loại bỏ hoàn toàn người dùng sẽ là đơn giản nhất.

Tôi muốn chắc chắn rằng tôi đang sử dụng công cụ theo cách nó được dự định. Sẽ có bất kỳ vấn đề trong việc tái xuất bản bất kỳ trong số đó trở lại sản xuất? Quy trình thích hợp để thêm người dùng / đăng nhập thông qua dự án là gì?


1
Tôi chỉ nhận thấy rằng nó đã không xảy ra cho tất cả người dùng. Tất cả họ đều là người dùng SQL và một số người đã bị vô hiệu hóa (mặc dù những người khác thì không). Bất kỳ ý tưởng nơi để bắt đầu tìm kiếm sự khác biệt?
Greg

Câu trả lời:


8

Cách dễ nhất là không quản lý người dùng thông qua ssdt (hầu hết mọi người không). Vì vậy, bạn chỉ có thể loại bỏ chúng và không triển khai thông tin đăng nhập hoặc người dùng.

Có ba cách:

  • các tùy chọn mới để bỏ qua người dùng / đăng nhập
  • viết một người đóng góp triển khai để kéo họ ra
  • sử dụng cộng tác viên triển khai của tôi http: // agilesqlclub.Codeplex.com

Ed


Liên kết của bạn ở đây cũng khá hữu ích: blog.msdn.com/b/ssdt/archive/2015/02/23/iêu
Greg

1
Bạn có thể giải thích rõ hơn về "các tùy chọn mới để bỏ qua người dùng / đăng nhập" không?
Yawar Murtaza


9

Tôi đã có cùng một vấn đề và tìm thấy liên kết này

Người dùng có một tham chiếu chưa được giải quyết để Đăng nhập

Nếu bạn tạo thông tin đăng nhập cụ thể cho ứng dụng (mà bạn nên) thì bạn sẽ gặp phải lỗi này khi cố gắng xây dựng giải pháp của mình. Để sửa lỗi này, chọn bao gồm các loại đối tượng 'Không có phạm vi ứng dụng' trong các tùy chọn (biểu tượng bánh răng ở trên cùng) khi bạn thực hiện so sánh lược đồ (bấm chuột phải vào dự án cơ sở dữ liệu để tìm So sánh lược đồ). Sau đó, bạn có thể nhập thông tin đăng nhập vào dự án thông thường của bạn và các tài liệu tham khảo được sắp xếp. Lưu ý: Nếu bạn nhấp vào tab Loại đối tượng và nó đóng hộp thoại (nó đã làm cho tôi), thay vào đó hãy sử dụng phím tab cho đến khi Phạm vi ứng dụng được tô sáng, sau đó nhấn mũi tên xuống để tô sáng Không phạm vi ứng dụng và nhấn phím thanh không gian. Bây giờ bạn sẽ có thể nhấp vào OK và xem thông tin đăng nhập.


1
Cảm ơn bạn đã phản hồi! Bạn có thể cung cấp một số bối cảnh cho các hướng dẫn này? Ví dụ, so sánh lược đồ có liên quan gì đến lỗi này? Tab Loại đối tượng ở đâu? Nơi nào bạn nhấn phím tab? V.v.
Jake

Chắc chắn rồi. Về cơ bản trong VS2013 / 2015, bạn có dự án cơ sở dữ liệu chứa tất cả SQL của bạn cho giải pháp bạn đang sử dụng. Nếu bạn nhấp chuột phải vào dự án DB đó và nhấp vào "So sánh lược đồ", bạn có thể so sánh những gì trong dự án của bạn với những gì trong cơ sở dữ liệu của bạn. Ở đầu cửa sổ bật lên là biểu tượng Cog cho các cài đặt. Bạn không thể nhấp vào hộp kiểm "Không có phạm vi ứng dụng" bằng chuột vì một số lý do, vì vậy hãy sử dụng phím tab để thay thế. Nhấn phím tab một lần, sau đó nhấn phím mũi tên xuống và sau đó là thanh dấu cách để chọn nó. Mong rằng sẽ giúp.
SpeedOfSpin

1

Rõ ràng, vấn đề này vẫn đang xảy ra trên các dự án cơ sở dữ liệu VS2017.

Tôi đã quản lý để giải quyết nó bằng cách trước tiên tạo đăng nhập và sau đó tạo người dùng.

    -- 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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.