SQL Server

FrontPage

  • SQLServer Tips一覧 [#edb2c2b2]
  1. ls
  • 旧Tips(整理していないのでフラットな状態で表示されています) [#s9ef7244]
  • ネットワーク経由でMSDEに接続できない [#pcd5ca8d]

いくつか原因があると思うが、 まずはサーバーへTELNETで1433番に接続してみる。 接続できなかったら、通信自体失敗している。

今回はMSDE側でTCP/IPの接続を受け付けていない設定になっていた。 設定は以下のツールで行う(インストール場所によりパスは変わる)

C\Program Files\Microsoft SQL Server\80\Tools\Binn\SVRNETCN.exe"

このツールを起動してTCP/IPを有効にしてやることで接続可能になった。

  • Transact-SQL [#r8cdaea3]
    • テーブル名の一覧表示 [#q286eeb7]

select name from sysobjects where xtype = ‘U’

    • テーブルの定義表示 [#a0f35f24]

exec sp_help [テーブル名]

    • SUM等の集計関数を使うときの注意点(やや未確認の情報) [#cc05f528]

古くて申し訳ないがDAO2.7の話。 SUM()などを使って集計値を取った場合にフィールドの値を列名で指定してレコードセットから取得する場合、 ASを指定して別名を明示的に指定しないといけない。

SELECT SUM(Kingaku) AS Kingaku FROM URIAGE GROUP BY CustomerID

以下のようにASで別名を指定しない場合はクエリアナライザで動かすと(列名なし)という状態になる。

SELECT SUM(Kingaku) FROM URIAGE GROUP BY CustomerID

困ったことにDAOでは(ADOとかは試してない)この状態で「Kingaku」のフィールドを取得しようとしても 特にエラーにならずに0が返ってくる。

    • コメント方法 [#q286eeb7]

一行コメントは「-」を2回連続で入力するとなります

-- SELECT SUM(Kingaku) FROM URIAGE GROUP BY CustomerID

複数行コメントは「/* ・・・ */」ですね

/*
 SELECT SUM(Kingaku) FROM URIAGE GROUP BY CustomerID
 SELECT MAX(Kingaku) FROM URIAGE GROUP BY CustomerID
*/

応用として

  SELECT 
         SUM(Kingaku)  -- 総金額です!!
  FROM 
         URIAGE GROUP BY CustomerID

  • VBとの関連 [#pa9c357f]
    • SQL文の書き方のコツ [#fd43f6f0]

そもそもこれがよいのかは別として、だらーとSQLをPGに埋め込んでしまう場合は、わかりやすくなる。

sql = "INSERT INTO " & pstrTableName & " (" sql = sql & "[CustomerName]" sqlv = sqlv & CStr(.strCustomerName) & " " GetSQL = sql & ") VALUES (" & sqlv & ");"

みたいな感じで列とVALUEを並べて書いて後でがっちゃんこする。

  • Enterprise Manager [#n098f108]
    • テーブルの編集画面でNULLをフィールドに入れる [#ucd4f47c]

ctrl + 0を押すと、NULL値が入る