formatieren von t-sql in ssms 2012
<p>nach diesem microsoft-dokument:</p><p> <a href="http://msdn.microsoft.com/en-us/library/ms174205.aspx">http://msdn.microsoft.com/en-us/library/ms174205.aspx</a> </p><p>ich sollte in der lage sein, meine sql-dokumente in sql server management studio 2012 mit strg + k und dann mit strg + d zu formatieren, aber wenn ich diese kombination verwende, wird folgende fehlermeldung angezeigt:</p><blockquote> <p>die tastenkombination (strg + k, strg + d) ist an den befehl (format format) gebunden, der derzeit nicht verfügbar ist.</p> </blockquote><p>ich versuche, änderungen an einem vorhandenen sql-dokument vorzunehmen, das überhaupt nicht formatiert ist, was das lesen extrem erschwert. weiß jemand, wie man den befehl dokument formatieren verfügbar macht, damit ich diesen code von sql formatieren kann?</p>
<p>die tastaturkombination, nach der sie suchen (<kbd>ctrl</kbd>+<kbd>k</kbd>, <kbd>ctrl</kbd>+<kbd>d</kbd>) dient der "formatierung" - aber nicht in dem maße, wie sie es zu erwarten scheinen. es ist kein prettifier, sondern dient nur zum einfügen korrekter abstände und tabulatoren wie in <code>tools &gt; options &gt; text editor &gt; transact-sql &gt; general/tabs</code>. wenn sie also einen teil des texts markieren und die tastaturkombination drücken, werden tabulatoren in 4 leerzeichen konvertiert ( wenn sie leerzeichen einfügen ausgewählt haben, wenden sie die von ihnen angegebene art des einrückens usw. an.</p><p>diese option soll den code nicht lesbarer machen. dies ist keine funktionalität, die management studio derzeit nativ bietet. es gibt zwar mehrere optionen von drittanbietern - einige befinden sich außerhalb von management studio, z.</p><ul> <li> <a href="http://extras.sqlservercentral.com/prettifier/prettifier.aspx">sql prettifier von simple-talk</a> </li> <li> <a href="http://poorsql.com/">schlechtes sql</a> (welches <a href="https://dba.stackexchange.com/a/45052/1186">thomas schlug vor</a> )</li> </ul><p>außerdem gibt es add-ins für verschiedene ebenen der formatierungsunterstützung im editor:</p><ul> <li> <a href="http://www.red-gate.com/products/sql-development/sql-prompt/features">sql-eingabeaufforderung von red-gate</a> </li> <li> <a href="http://ssmstoolspack.com/features?f=4">ssms tools pack</a> </li> <li> <a href="http://www.apexsql.com/sql\_tools\_refactor.aspx">apexsqls refactor</a> </li> <li> <a href="http://www.ssmsboost.com/features/ssms-add-in-format-sql-document">ssmsboost</a> </li> <li> <a href="http://www.devart.com/dbforge/sql/sqlcomplete/">dbforge sql complete</a> (welches <a href="https://dba.stackexchange.com/a/45063/1186">robert schlug vor</a> )</li> </ul><p>nun, der grund, warum sie die nachricht erhalten ...</p><blockquote> <p>die tastenkombination (strg + k, strg + d) ist an den befehl (format format) gebunden, der derzeit nicht verfügbar ist.</p> </blockquote><p>... liegt daran, dass ssms diese tastenkombination einem anderen kontext zugeordnet hat. die art und weise, wie sie <em> sollten</em> in der lage sein, dies zu "beheben" - auch hier würde es immer noch nicht das tun, was sie möchten, selbst wenn das "beheben" funktioniert - ist wie folgt:</p><ol> <li>gehe zu <code>tools &gt; options &gt; environment &gt; keyboard</code></li> <li>platzieren sie ihren cursor in das feld <code>press shortcut keys:</code></li> <li>schlagen <kbd>ctrl</kbd>+<kbd>k</kbd>, <kbd>ctrl</kbd>+<kbd>d</kbd></li> <li> <p>ändern sie das dropdown-menü <code>shortcut currently used by:</code> von <code>datawarehouse designer</code> in <code>text editor</code>.</p> <p><img src="https://i.stack.imgur.com/1g5oe.png" alt="enter image description here"></p> </li> <li> <p>drücke ok</p> </li> </ol><p>dies ist <em> angenommen</em>, um die tastaturkombination dem texteditor zuzuordnen, aber management studio setzt sie zurück, nachdem sie auf ok geklickt haben (sie erhalten weiterhin die fehlermeldung. ich denke, das problem ist das die dokumentation geht davon aus, dass diese funktionalität vorhanden ist, aber management studio weiß es besser und bietet sie einfach nicht an (und microsoft wird dies wahrscheinlich als fehler in der dokumentation abschreiben und korrigieren, anstatt als mangel im tool) hoffe in der zukunft, aber vorerst <a href="http://connect.microsoft.com/sql/feedback/viewfeedback.aspx?feedbackid=496617">dies ist ein bekanntes und weitgehend ignoriertes problem</a> . sie werden feststellen, dass die registerkarte <code>formatting</code> diese <a href="http://msdn.microsoft.com/en-us/library/ms174205(sql.110).aspx">die dokumentation bezieht sich auf</a> ist einfach nicht vorhanden (obwohl es für xml vorhanden ist, wo die tastaturkombination funktioniert). in der dokumentation sollte wahrscheinlich folgendes angegeben werden:</p><blockquote> <p>wendet die einrückungs- und leerzeichenformatierung für die sprache an, die im bereich <strong> formatierung </strong> der sprache im texteditor <strong> angegeben ist </strong> abschnitt des dialogfelds <strong> optionen </strong>. nur im texteditor verfügbar <strong> <em> und nur für bestimmte sprachen</em> </strong>.</p> </blockquote><p>eine andere möglichkeit, sich ein bild davon zu machen, welche art von formatierungsoptionen ssms nativ bietet, besteht darin, unter <code>tools &gt; customize &gt; commands &gt; edit &gt; add command... &gt; format</code> die liste der möglichen befehle dort anzuzeigen. nichts, was darauf hinweist, dass kenntnisse der tatsächlichen sprache vorhanden sind, sodass nicht bekannt ist, wo zeilenumbrüche eingefügt oder zusätzliche einrückungen hinzugefügt oder klammern usw. verwendet werden sollen.</p><p><img src="https://i.stack.imgur.com/zhrer.png" alt="enter image description here"></p><p>wenn sie eine sprachspezifische formatierung wünschen, um den vorhandenen t-sql-code besser lesbar zu machen, erhalten sie von ssms nicht viel, und sie müssen nach anderen optionen suchen.</p>
<p>sie können das meiste davon tun, indem sie eine login.sql verwenden. login.sql wird während der - überraschenden - anmeldung ausgeführt und aus ihrem sqlpath oder dem aktuellen verzeichnis geladen. für die beispiele, die sie gegeben haben, haben sie wirklich den schlimmsten fall gewählt.</p><p>problem ist der sqlterminator. was auch immer sie dort eingeben, der schrägstrich wird als kostenloser sql-minator beibehalten. daneben sucht sqlplus zuerst nach dem sqlterminator und führt dies vor dem scannen zum string-terminator durch. ein fehler, wenn sie mich fragen. der schrägstrich kann in einer zeichenfolge verwendet werden, solange er nicht allein in einer separaten zeile steht. sobald sqlplus das als sqlterminator angegebene zeichen findet, ignoriert es alles andere und hört auf zu lesen.</p><p>der schrägstrich kann behandelt werden, solange er nicht alleine in einer zeile steht.</p><p>login.sql enthält:</p><pre><code>prompt run login.sql show sqlterminator show sqlblanklines set sqlblanklines on set sqlterminator ';' show sqlterminator show sqlblanklines prompt ready login.sql set echo on </code></pre><p>leigh.sql enthält:</p><pre><code>insert into t1 values ('fail bc semicolon a;a / '); insert into t1 values ('fail bc solo / aa / '); insert into t1 values ('ok / not solo aa /a '); delete from t1 where a = 'c a/ '; </code></pre><p>führen sie das skript aus:</p><pre><code>sqlplus leigh/leigh@orcl @leigh sql*plus: release 10.2.0.4.0 - production on thu aug 9 22:36:20 2012 copyright (c) 1982, 2007, oracle. all rights reserved. connected to: oracle database 11g enterprise edition release 11.2.0.3.0 - 64bit production with the partitioning, real application clusters, automatic storage management, olap, data mining and real application testing options run login.sql sqlterminator ";" (hex 3b) sqlblanklines off sqlterminator ";" (hex 3b) sqlblanklines on ready login.sql sql&gt; insert into t1 values ('fail bc semicolon 2 a;a 3 / error: ora-01756: quoted string not properly terminated sql&gt; '); sp2-0042: unknown command "')" - rest of line ignored. sql&gt; sql&gt; insert into t1 values ('fail bc solo / 2 3 4 aa 5 / error: ora-01756: quoted string not properly terminated sql&gt; '); sp2-0042: unknown command "')" - rest of line ignored. sql&gt; sql&gt; insert into t1 values ('ok / not solo 2 3 4 aa 5 /a 6 '); 1 row created. sql&gt; sql&gt; delete from t1 where a = 'c 2 3 4 a/ 5 '; 0 rows deleted. </code></pre><p>sie müssen nicht mit start-/endblöcken herumspielen. der befehl sqlterminator innerhalb des befehls kann nicht verarbeitet werden, unabhängig davon, wo er sich in einer zeichenfolge befindet oder nicht. er kann keine zeilen mit schrägstrich allein in einer zeile in einer zeichenfolge verarbeiten.</p> Du musst die Datei unter Word 2013 im DOC-Dateiformat abspeichern. Dann kannst du die am MAC öffnen: <https://support.office.com/de-at/article/Speichern-einer-Datei-in-einem-anderen-Dateiformat-956eec7f-732a-4d3e-8a5c-0f04a9cdca4a>


Gruß Daniel Lehner, Team PC Help | Mitglied im gutefrage.net Experten-Team Du musst ein JPG-Bild einer gestrichelten Linie nach deinem Wunsch erstellen.  
Im Menü "Datenreihen formatieren" auf keine Linie und Fülling mit Bild aus Datei.


mit Strecken oder Stapeln kannst du noch feinjustieren. Bei mir schaut es so aus:


 ![]() <p>hinweis: ab azure sql database v12 gelten diese einschränkungen nicht mehr.</p><p>das ist kein "primärindex". es gibt so etwas wie einen "primärschlüssel" und es gibt auch so etwas wie einen "clustered index". unterschiedliche konzepte, oft verwirrt. lassen sie uns angesichts dieser unterscheidung die frage noch einmal betrachten:</p><p>q1) kann der clustered-index in einer sql azure-tabelle geändert werden?<br> a: ja. verwenden sie <code>with (drop\_existing=on)</code>:</p><pre><code>create table friend ( userid int not null, id int not null); go create clustered index cdxfriend on friend (userid, id); go create clustered index cdxfriend on friend (id, userid) with (drop\_existing=on); go </code></pre><p>f2) kann der clustered-index einer tabelle mit einer primärschlüsseleinschränkung geändert werden?<br> a: ja, wie oben, solange die primärschlüsseleinschränkung nicht über den clustered-index erzwungen wird:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key nonclustered (id)); create clustered index cdxfriend on friend (userid, id); go create clustered index cdxfriend on friend (id, userid) with (drop\_existing=on); go </code></pre><p>f3) kann die primärschlüsseleinschränkung einer tabelle geändert werden?<br> a: ja, solange die primäre einschränkung nicht über den clustered-index erzwungen wird:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key nonclustered (id)); go create clustered index cdxfriend on friend (userid, id); go alter table friend drop constraint pk\_friend; alter table friend add constraint pk\_friend primary key nonclustered (userid) go </code></pre><p>f4) kann der primärschlüssel einer tabelle geändert werden, wenn er über den clustered-index erzwungen wird?<br> a: ja, wenn die tabelle nie zeilen hatte:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key clustered (userid, id)); go alter table friend drop constraint pk\_friend; alter table friend add constraint pk\_friend primary key clustered (id, userid) go </code></pre><p>f5) kann der primärschlüssel einer tabelle geändert werden, wenn er über den clustered-index erzwungen wird, wenn die tabelle gefüllt ist?<br> a: nein. jede operation, die einen aufgefüllten clustered-index in einen heap konvertiert, wird in sql azure blockiert <em>, auch wenn die tabelle leer ist </em>:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key clustered (userid, id)); go insert into friend (userid) values (1); delete from friend; go alter table friend drop constraint pk\_friend; </code></pre><p>als randnotiz: die einschränkung kann geändert werden, wenn die tabelle <em> abgeschnitten ist </em>.</p><p>die problemumgehung zum ändern der pk-einschränkung einer aufgefüllten tabelle besteht darin, das gute alte <a href="http://msdn.microsoft.com/en-us/library/ms188351.aspx"><code>sp\_rename</code></a> trick:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key clustered (userid, id)); go insert into friend (userid) values (1); go create table friendnew ( userid int not null, id int not null identity(1,1), constraint pk\_friend\_new primary key clustered (id, userid)); go set identity\_insert friendnew on; insert into friendnew (userid, id) select userid, id from friend; set identity\_insert friendnew off; go begin transaction exec sp\_rename 'friend', 'friendold'; exec sp\_rename 'friendnew', 'friend'; commit; go sp\_help 'friend'; </code></pre><p>das <code>sp\_rename</code> ansatz hat einige probleme, vor allem, dass berechtigungen für die tabelle während des umbenennens nicht übertragen werden, sowie fremdschlüsseleinschränkungen.</p> OK, geht.  

  

Formular aufrufen, dann speichern, dann kann dieser gespeicherte Eintrag in der absolut korrekten Formatierung gemailt werden. DANKE Zollsoft Hallo,


spontan fallen mir hier zwei Wege ein, die zum Ziel führen:


1. Man könnte das Problem über **Verzeichniseintragsfelder** (TC-Felder) lösen. Ist halt ein bisschen umständlich, diese erst im Nachhinein anzulegen, wenn man schon einige Überschriften bzw. Gliederungspunkte im Dokument hat. Wie man mit Verzeichniseintragsfeldern arbeitet, steht [hier](http://www.borkpc.de/Word/wd_inhver3.html) beschrieben.
2. Eine Alternative wäre, das komplett fertige **Inhaltsverzeichnis** im Nachhinein bzw. vor dem Drucken **in statischen Text** zu **konvertieren** und dann mit Suchen-und-Ersetzen die Nummerierung bzw. die Aufzählungszeichen zu entfernen.


Eine Rückmeldung wäre nett.


Gruß, BerchGerch Du klickst den zu kopierenden Tab mit der linken Maustaste an, hältst sie gedrückt, verschiebst den Tab zur Seite, drückst dann auf der Tastatur die "Strg"-Taste, lässt die Maustaste los und danach die "Strg"-Taste. Mit dem Formeleditor kannst du in Word eigentlich alles machen, was mit Mathematik zu tun hat. Bei Word 2003 geht das auch schon, ist nur wesentlich umständlicher.


Gruß, Francesco Hallo,  
  
ohne weitere Details lässt sich der Fehler leider nicht prüfen.  
  
Bitte stellen Sie trotz Sperrmeldung sicher, dass Sie Ihre Zugangsdaten in SFIRM aktualisiert haben.   
  
Hier finden Sie die neuen Zugangsdaten zur Eingabe in Ihr Banking-Programm: [Neue HBCI Zugangsdaten.](https://meine.bw-bank.de/faqs/wie-lauten-die-neuen-hbci-zugangsdaten-fuer-meine-online-banking-software-zahlungsverkehrsprogramme)  
  
Sollte der Fehler trotz richtigen Kommunikationsdaten weiterhin auftreten, lassen Sie uns bitte weitere Details an [community@bw-bank.de](mailto:community@bw-bank.de) zukommen (Kontonummer, Screenshot, Fehlerprotokoll etc.).  
  
Beste Grüße  
Nicolas Wenn eine Spalte in der Datenbank nullfähig ist, hat die Ergebnisklasse auch eine nullfähige Eigenschaft. 

 Wenn beispielsweise eine `Order` eine `Datetime` Spalte mit dem Namen `CreatedDate` , sieht die resultierende `Order` Klasse in etwa wie folgt aus: 


```
public partial class Order: EntityObject
{
  ...
  private DateTime? _createdDate;
  ...
}

```
  Wenn \_ `createdDate` keinen Wert hat, wenn Sie `ObjectContext.SaveChanges()` aufrufen, wird eine `System.DBNull` automatisch als Teil des Befehls insert oder update an die Datenbank gesendet. 

 Hoffe das hilft Alex