2013-03-17 6 views
7

Uczę się "projektu bazy danych" Visual Studio 2012, używając Visual Studio 2012 z aktualizacją 1 oraz SSDT.Używanie projektu bazy danych i narzędzi danych SQL w programie Visual Studio 2012: Jak uzyskać tabele tymczasowe do rozwiązania?

Bardzo dobrze odnajduję się w odnajdywaniu prawdziwych problemów w mojej bazie danych, zwłaszcza w błędach programistycznych w procedurach przechowywanych, w których ktoś usunął pole z tabeli bazy danych, ale nie przeszedł i sprawdził, czy wszystkie zapisane procedury są wykonywane bez błędów . Sprawdzanie poprawności skryptów .sql za pomocą polecenia "kompilacja" w Visual Studio 2012 jest bardzo przydatne. Nie chciałbym go porzucić.

Ale zauważam również, że gdy w procedurze przechowywanej jest używane #TEMPTABLE, nawet gdy "Włącz rozszerzoną weryfikację Transact-SQL dla typowych obiektów" jest wyłączona, nadal dostaję "błędy kompilacji" obejmujące # odwołania temptable.field w procedurach przechowywanych.

Jakie kroki podejmuje projekt bazy danych w celu ustalenia schematu tabeli tymczasowej? Ponieważ moje tymczasowe tabele z definicji nie istnieją w głównym schemacie, nie dostały się do mojego projektu bazy danych po zaimportowaniu rzeczywistej bazy danych SQL do programu Visual Studio za pośrednictwem opcji Importuj bazę danych, zaraz po utworzeniu bazy danych.

Czy powinienem tworzyć pliki "# TEMPTABLE.SQL" i dodawać je do mojego projektu? Błąd

Próbka:

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

Jeżeli istnieje sposób, aby to skrypt, który definiowało temptables w użyciu raz, i umieścić go w różnych miejscach, gdzie jest to konieczne, aby wiedzieć o nich, jeśli T-SQL musi być dokładnie zatwierdzony, to byłoby w porządku, a jeśli Zwrot z Rozszerzonej Weryfikacji zrobiłby to, co myślę, że powinien zrobić, to może nic nie będzie konieczne.

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 sugeruje, że jest to obszar, gdzie technologia ta została po prostu płaskim się uszkodzony i Microsoft znany od lat o tym i nic o tym nie zrobił. Czy w VS2012.U1 + SSDT_Dec2012 jest coś lepszego?

+0

Czy odwołujesz się do tabeli tymczasowej utworzonej w ramach jej sesji, a następnie używanej w innym miejscu (utworzonym w 1 proc, a następnie używanym w innym)? Czy to wszystko w jednym proc? – Rich

+0

Są to tabele tymczasowe używane jako prawie "niewidoczne dane wejściowe" w procedurze przechowywanej, utworzone przed wywołaniem tej procedury składowanej i modyfikowane tylko przez procedury składowane, które są wywoływane. To może być dość nieprzyjemny "zapach schematu", ponieważ trudno jest dokładnie określić, co ta procedura składowana oczekuje, że istnieje jako stan wstępny. Nie podoba mi się to bardzo, ale w tym właśnie muszę pracować. Co gorsza, aplikacje tworzące tabele tymczasowe są obecnie jedynym miejscem, w którym schemat jest zdefiniowany dla tabeli tymczasowej. Szukałem '- # pragma' lub ... –

+0

Zadaję to samo pytanie na stronie Microsoft' social.msdn' tutaj: http://social.msdn.microsoft.com/Forums/en-US/ ssdt/thread/12c0a590-4273-4861-8d00-a5804b0ea6cc –

Odpowiedz

3

Jest to problem z tabelą tymczasową, należy używać funkcji wycenianych w tabeli.

+0

To się zgadza. I prawdopodobnie nie ma mowy, żeby Microsoft mógł bezpiecznie wdrożyć system temp-table. –

Powiązane problemy