Ich lerne das "Datenbankprojekt" -System von Visual Studio 2012 mit Visual Studio 2012 mit Update 1 und SSDT.Verwenden von Datenbankprojekt und SQL-Datentools in Visual Studio 2012: Wie bekomme ich temporäre Tabellen zur Lösung?
Ich finde es sehr gut, echte Probleme in meiner Datenbank zu finden, insbesondere Programmierfehler in gespeicherten Prozeduren, wo jemand ein Feld aus einer Datenbanktabelle entfernt hat, aber nicht durchging und alle gespeicherten Prozeduren ohne Fehler ausführen . Die Validierung Ihrer .sql-Skripte über den Befehl "build" in Visual Studio 2012 ist sehr praktisch. Ich würde es hassen, es aufzugeben.
Aber ich stelle auch fest, dass wann immer eine # TEMPTABLE in einer gespeicherten Prozedur verwendet wird, selbst wenn "Erweiterte Transact-SQL-Überprüfung für allgemeine Objekte aktivieren" deaktiviert ist, bekomme ich "Buildfehler" mit # temptable.field-Referenzen in gespeicherten Prozeduren.
In welchen Schritten ermittelt das Datenbankprojekt das Schema einer temporären Tabelle? Da meine temporären Tabellen definitionsgemäß nicht im Hauptschema vorhanden sind, gelangten sie nicht in mein Datenbankprojekt, als ich eine echte Produktions-SQL-Datenbank direkt nach dem Erstellen der Datenbank über die Option Datenbank importieren in Visual Studio importierte.
Sollte ich "# TEMPTABLE.SQL" -Dateien erstellen und sie zu meinem Projekt hinzufügen?
Probenfehler:
c:\dev\...\dbo\Stored Procedures\xyz.sql(95,96): Warning: SQL71502: Procedure: [dbo].[proc123] has an unresolved reference to object [#temptable1].[somefield1].
Wenn war es eine Möglichkeit, ein Skript zu enthalten, die die TempTables in Gebrauch einmal definiert und in die verschiedenen Orte sind, wo es über diese zu wissen, ob die T-SQL erforderlich ist Das wäre in Ordnung, das wäre in Ordnung, und wenn Turning of Extended Verification getan hat, was ich denke, es sollte tun, dann wäre vielleicht nichts notwendig.
A question on this same subject but for Visual Studio 2010 legt nahe, dass dies ein Bereich ist, wo diese Technologie nur flach ausgebrochen ist und Microsoft seit Jahren darüber und nichts getan, um es bekannt. Ist jetzt etwas besser in VS2012.U1 + SSDT_Dec2012?
Verweisen Sie auf eine temporäre Tabelle, die im Rahmen ihrer Sitzung erstellt und dann an anderer Stelle verwendet wird (erstellt in 1 proc, dann in einer anderen)? Oder ist das alles in einem Prozess? – Rich
Dies sind temporäre Tabellen, die als "unsichtbare Eingaben" für die gespeicherte Prozedur verwendet werden, die vor dem Aufruf dieser gespeicherten Prozedur erstellt und nur von den gespeicherten Prozeduren geändert wurde, die aufgerufen werden. Das könnte in der Tat ein ziemlich übler "Schema-Geruch" sein, da es schwer ist genau zu sagen, was diese gespeicherte Prozedur als Vorzustand erwartet. Ich mag es nicht sehr, aber es ist das, woran ich arbeiten muss. Noch schlimmer ist, dass die Anwendungen, die die temporären Tabellen erstellen, die einzige Stelle sind, an der das Schema momentan für die temporäre Tabelle definiert ist. Ich suchte nach einem '- # Pragma' oder ... –
Ich stellte die gleiche Frage auf der Microsoft' social.msdn 'Seite hier: http://social.msdn.microsoft.com/Forums/en-US/ ssdt/thread/12c0a590-4273-4861-8d00-a5804b0ea6cc –