2013-03-17 13 views
7

Tôi đang học hệ thống "dự án cơ sở dữ liệu" của Visual Studio 2012, sử dụng Visual Studio 2012 với Bản cập nhật 1, cộng với SSDT.Sử dụng dự án cơ sở dữ liệu và Công cụ dữ liệu SQL trong Visual Studio 2012: Làm cách nào để nhận bảng tạm thời để giải quyết?

Tôi thấy rất tốt trong việc tìm kiếm các vấn đề thực sự trong cơ sở dữ liệu của mình, đặc biệt là lỗi lập trình trong các thủ tục đã lưu trữ nơi ai đó đã xóa trường khỏi bảng cơ sở dữ liệu nhưng không đi qua và xác minh rằng tất cả các thủ tục được lưu trữ thực thi không có lỗi . Vì vậy, xác nhận các script .sql của bạn thông qua lệnh "build" trong Visual Studio 2012 rất tiện dụng. Tôi ghét phải từ bỏ nó. Nhưng tôi cũng lưu ý rằng bất cứ khi nào #TEMPTABLE được sử dụng trong một thủ tục lưu sẵn, ngay cả khi "Kích hoạt tính năng xác minh Transact-SQL mở rộng cho các đối tượng chung" bị tắt, tôi vẫn nhận được "lỗi xây dựng" liên quan đến tham chiếu # temptable.field trong các thủ tục được lưu trữ.

Dự án cơ sở dữ liệu thực hiện các bước nào để xác định lược đồ của bảng tạm thời? Vì các bảng tạm thời của tôi theo định nghĩa không tồn tại trong lược đồ chính, chúng không nhận được vào dự án cơ sở dữ liệu của tôi khi tôi nhập một cơ sở dữ liệu SQL sản xuất thực vào Visual Studio thông qua tùy chọn Import Database, ngay sau khi tạo cơ sở dữ liệu.

Tôi có nên tạo tệp "# TEMPTABLE.SQL" và thêm chúng vào dự án của tôi không? lỗi

mẫu:

c:\dev\...\dbo\Stored Procedures\xyz.sql(95,96): Warning: SQL71502: Procedure: [dbo].[proc123] has an unresolved reference to object [#temptable1].[somefield1]. 

Nếu có là một cách để bao gồm một kịch bản mà xác định temptables được sử dụng một lần, và đưa nó vào những nơi khác nhau, nơi nó là cần thiết để biết về những nếu T-SQL sẽ được kiểm chứng kỹ lưỡng, điều đó sẽ ổn thôi, và nếu Turning of Extended Verification đã làm những gì tôi nghĩ rằng nó phải làm, thì có lẽ không có gì là cần thiết.

Forum post suggests this isn't possible to fix and that all I can do is effectively turn off this warning at a file level, which is kind of horrible.

A question on this same subject but for Visual Studio 2010 gợi ý rằng đây là lĩnh vực mà công nghệ này đã được chỉ ra khỏi căn hộ bị phá vỡ và Microsoft đã được biết đến trong nhiều năm qua về nó và không làm gì về nó. Có gì tốt hơn trong VS2012.U1 + SSDT_Dec2012 không?

+0

Bạn đang đề cập đến bảng tạm thời được tạo trong phạm vi phiên của nó và sau đó được sử dụng ở nơi khác (được tạo trong 1 proc, sau đó được sử dụng trong một phiên bản khác)? Hoặc là tất cả trong một proc? – Rich

+0

Đây là các bảng tạm thời được sử dụng như gần như "đầu vào vô hình" cho thủ tục lưu sẵn, được tạo trước khi thủ tục được lưu trữ này được gọi và chỉ được sửa đổi bởi các thủ tục được lưu trữ được gọi. Đó có thể là một "mùi lược đồ" khá khó chịu trên thực tế, vì thật khó để nói chính xác quy trình được lưu trữ này dự kiến ​​sẽ tồn tại như một trạng thái trước. Tôi không thích nó lắm, nhưng đó là những gì tôi phải làm việc bên trong. Điều thậm chí còn tồi tệ hơn là các ứng dụng tạo ra các bảng tạm thời là nơi duy nhất ngay bây giờ mà lược đồ được định nghĩa cho bảng tạm thời. Tôi đang tìm kiếm một '- # pragma' hoặc ... –

+0

Tôi đã hỏi cùng một câu hỏi tại trang web 'social.msdn' của Microsoft tại đây: http://social.msdn.microsoft.com/Forums/en-US/ ssdt/thread/12c0a590-4273-4861-8d00-a5804b0ea6cc –

Trả lời

3

Đó là vấn đề với bảng tạm thời, bạn nên sử dụng các hàm có giá trị bảng.

+0

Điều này là chính xác. Và có lẽ không có cách nào Microsoft có thể thực hiện một hệ thống bảng tạm thời một cách an toàn. –

Các vấn đề liên quan