SELECT sqlserver_start_time FROM sys.dm_os_sys_info
2021/09/22
2020/06/24
SQL Server Management Studio ダークテーマ
output句 inserted.*, deleted.* @@ROWCOUNT
table変数のことも知らず。Microsoft SQL Serverの本って、もう10年以上読んでないなぁ。たぶんプログラマ1年生の頃に読んだきりだな。あれは2006年か。勉強不足です。当時読んだのは「SQL Server 2005でいってみよう」って本だったかなぁ。
これも知らなかった。
2019/10/01
postgres消したろ。drop database postgres;
postgresql初心者わい「postgresにdumpを復元してもーた。postgres消したろ。drop database postgres;」— 垂金権造 (@valvallow) September 30, 2019
\c template1 drop database postgres;
psql起動しようとしたところで「あ・・・」
% su postgres -c 'createdb postgres' Password: WARNING: could not flush dirty data: Function not implemented % psql -U postgres -h localhost -W Password for user postgres:事なきを得た。(?)
PostgreSQL テーブル一覧とかカラム一覧とか
--テーブル一覧 SELECT relname FROM pg_stat_user_tables
--テーブルコメント一覧 SELECT psut.relname AS TABLE_NAME ,pd.description AS TABLE_COMMENT FROM pg_stat_user_tables psut ,pg_description pd WHERE 1=1 AND psut.relid=pd.objoid AND pd.objsubid=0
--カラムコメント SELECT pg_stat_user_tables.relname ,information_schema.columns.column_name ,information_schema.columns.data_type ,( SELECT description FROM pg_description WHERE 1=1 AND pg_description.objoid=pg_stat_user_tables.relid AND pg_description.objsubid=information_schema.columns.ordinal_position ) FROM pg_stat_user_tables ,information_schema.columns WHERE 1=1 AND pg_stat_user_tables.relname=information_schema.columns.table_name ORDER BY pg_stat_user_tables.relname
--カラム型 SELECT table_name ,column_name ,is_nullable ,is_updatable ,data_type ,character_maximum_length FROM information_schema.columns WHERE 1=1 --AND table_schema = 'public' ORDER BY table_name ,ordinal_position
2013/07/10
CSVをSQL文に変換する
以前、必要だったのでザックリ書いたスクリプトだけど、便利だったんで結構使用頻度が高い。使うたびに修正したり機能追加されてる。あんまりちゃんとしたスクリプトでもないけど重宝してる。こういうのって普通はExcelとかで生成したりするもんなんだろうか?昔いた会社ではExcelで生成してたなあ。あれはあれで慣れれば便利なのかもしれん。慣れたくないけどな。
SQLつながりだけど、プログラマのためのSQL第4版が出てるんですね。ちょっと読んでみたい。第2版だったかなー、本屋で数時間立ち読m(ゲフンゲフン
2011/04/05
Gauche-dbd-pg を使うにあたって
そういえば、dbi-connect には undocumented な auto-commit キーワード引数があるっぽい。
with-connection
(use dbi) (use gauche.parameter) (define *db* (make-parameter #f)) (define *dsn* (make-parameter #f)) (define *username* (make-parameter #f)) (define *password* (make-parameter #f)) (define-syntax with-connection (syntax-rules () ((_ (*db* dsn) . body) (with-connection (*db* dsn (lambda (dsn) (dbi-connect dsn))) . body)) ((_ (*db* dsn username password) . body) (with-connection (*db* dsn (lambda (dsn) (dbi-connect dsn :username username :password password))) . body)) ((_ (*db* dsn connector) . body) (parameterize ((*db* (connector dsn))) (guard (e (else (dbi-close (*db*)) (raise e))) (begin0 (begin . body) (dbi-close (*db*))))))))
.NET の ConnectionStringBuilder みたいなのが欲しいなと思って。
dsn
(use util.match) (define-class <dsn> () ((platform :init-keyword :platform :initi-value #f) (dbname :init-keyword :dbname :init-value #f) (host :init-keyword :host :init-value #f) (port :init-keyword :port :init-value #f) (dsn :init-keyword :dsn :init-value #f))) (define (%ref-join obj name delim) (if-let1 v (~ obj name) (string-append (symbol->string name) delim v) v)) (define-method build! ((con <dsn>)) (let1 g (cut %ref-join con <> "=") (let ((platform (string-append "dbi" ":" (or (~ con 'platform) ""))) (dbname (g 'dbname)) (host (g 'host)) (port (g 'port))) (let1 constr (string-append platform (if-let1 dbname dbname (string-append ":" dbname) "")) (when host (set! constr (string-append constr ";" host))) (when port (set! constr (string-append constr ";" port))) constr)))) (define (build-dsn platform . keys) (let-keywords* keys ((dbname #f)(host #f)(port #f)) (build! (apply make <dsn> :platform platform keys)))) (define (%split-constring constring splitter) (let1 splitted (string-split constring splitter) (match splitted ((base)(values base #f #f)) ((base host)(values base host #f)) ((base host port)(values base host port)) (else (values #f #f #f))))) (define (%split-base base splitter) (let1 splitted (string-split base splitter) (match splitted ((dbi)(values dbi #f #f)) ((dbi platform)(values dbi platform #f)) ((dbi platform dbname)(values dbi platform dbname)) (else (values #f #f #f))))) (define-method decompose! ((con <dsn>) constring) (let1 v (^n (list-ref (string-split n "=") 1)) (receive (base host port) (%split-constring constring ";") (when base (receive (dbi platform dbname) (%split-base base ":") (set! (~ con 'platform) platform) (set! (~ con 'dbname)(v dbname)))) (when host (set! (~ con 'host)(v host))) (when port (set! (~ con 'port)(v port))) con)))
transaction, call-with-transaction など。なぜだか transaction クラスを作りました。connection もクラスにしとけばよかったかなと思います。
(use dbi) (define-class <transaction> () ((connection :init-keyword :connection) (begin-query :init-keyword :begin-query :init-value #f) (commit-query :init-keyword :commit-query :init-value #f) (rollback-query :init-keyword :rollback-query :init-value #f) (state :init-keyword :state :init-value 'ready))) (define-class <pg-transaction> (<transaction>)()) (define-method initialize ((tran <pg-transaction>) initargs) (next-method) (set! (~ tran 'begin-query) "begin;") (set! (~ tran 'commit-query) "commit;") (set! (~ tran 'rollback-query) "rollback;")) (define-method transaction-begin ((tran <transaction>)) (rlet1 r (dbi-do (~ tran 'connection)(~ tran 'begin-query)) (set! (~ tran 'state) 'begin))) (define-method transaction-commit ((tran <transaction>)) (rlet1 r (dbi-do (~ tran 'connection)(~ tran 'commit-query)) (set! (~ tran 'state) 'committed))) (define-method transaction-rollback ((tran <transaction>)) (rlet1 r (dbi-do (~ tran 'connection)(~ tran 'rollback-query)) (set! (~ tran 'state) 'rollbacked))) (define (call-with-transaction proc) (let1 tran (make <pg-transaction> :connection (*db*)) (guard (e ((<dbi-error> e) (transaction-rollback tran) (raise e)) (else (raise e))) (transaction-begin tran) (rlet1 r (proc tran) (unless (let1 state (~ tran 'state) (or (eq? state 'commeted) (eq? state 'rollbacked))) (transaction-commit tran))))))
使う前に少し設定が必要になりますね。
(use file.util) (use util.list) (define-constant +server-bin-dir+ "/some/foo/bar") (define-constant +db-config+ (load-config (build-path +server-bin-dir+ "conf/db.conf"))) (define (init-module-dbi) (let* ((platform (assoc-ref +db-config+ 'db-platform)) (host (assoc-ref +db-config+ 'db-host)) (port (assoc-ref +db-config+ 'db-port)) (dbname (assoc-ref +db-config+ 'db-dbname)) (user (assoc-ref +db-config+ 'db-user)) (password (assoc-ref +db-config+ 'db-password))) ;; dbi (*dsn* (build-dsn platform :host host :port port :dbname dbname)) (*username* user) (*password* password)))
db.conf は例えばこんなの。load-config はここに載ってませんが、load-config で db.conf 読み込むと alist になるような手続きです。
;; -*- mode:scheme; coding:utf-8 -*- (db-platform "pg") (db-host "hogehoge.com") (db-port "5432") (db-dbname "fuga") ;; (db-user "postgres") ;; (db-password "")
with-connection は with-db を参考にしました。
他
2011/02/24
PostgreSQL 「The server lacks instrumentation functions. なんたらかんたら」
The server lacks instrumentation functions. pgAdmin III uses some support functions that are not available by default in all PostgreSQL versions. These enable some tasks that make life easier when The server lacks instrumentation functions. After the module is installed, you need to create the instrumentation functions in your maintenance database using the admin.sql script (admin81.sql for PostgreSQL) which are usually located in the pgsql share directory (e.g. /usr/local/pgsql/share)
pgAdmin III 使ってたらこういうのがよく出てきてた。いい加減よく読んでみたら、admin81.sql しなよみたいなことらしいのでその通りに。
ここを参考に。
yum install postgresql-contrib updatedb locate adminpack.sql sudo psql -U postgres < adminpack.sql
で、locate って何よ?と。whereis とか which は使ってましたが locate は知りませんでした。
で、バックアップとかリストアとかも GUI でやると何かとひっかかる。pg_dump, pg_restore の方がすんなり。
テーブル作成後に複合キー付けれなかったり、カラムのデータ型の変更が厳しかったりであたふたしたり。SQL Server は私のようなゆとりにもやさしかったなぁ(白目)。
2011/02/11
cygwin に gauche-dbd-pg
Emacs から tramp でサーバ側の shell を立ち上げるとローカルの Emacs からサーバ側の gosh REPL にコードを送ることができるので、サーバの PostgreSQL を操作するプログラムをローカルで開発できます。
できますが、例えば何かモジュールを作ってそれを利用するようなコードを書いた時にそのモジュールをサーバにアップロードしてからでないとテストができません。アップロードといっても、tramp を用いてローカルの Emacs の dired から直接コピーできるのですが、その一手間が面倒です。それに gosh の再起動もしくは reload 等も必要になります。一手間どころか、そもそもモジュールに変更があるたびに手作業が発生するなんて狂気の沙汰。
開発のサイクルのなかで、モジュールを再ロードしなければならないことは 頻繁におこります。このモジュールはそれを支援するものです。
ということで、ローカルの cygwin にも gauche-dbd-pg を入れて、ネットワーク越しにサーバの PostgreSQL に接続できるようにすることにしました。
で、cygwin の setup から postgresql を入れて、gauche-dbd-pg をダウンロードして展開して ./configure で make ・・・ でコケました。
dbd_pglib.c:817: error: too few arguments to function `Scm_Apply'GAUCHE_API_PRE_0_9 のことを教えてもらって、試しましたがうまくいきませんでした。
で、もう一度エラーメッセージをよく見ていたら、以前 serversman に入れた時も見たことがあるような気がしてきました。確か、kahua のページにある gauche-dbd-pg-0.2.1 を入れようとした時に見た気がします。
0.2.1 が同様のエラーでうまく入らなかったから trunk から持ってきて入れたんでした。で、今回もその trunk から入れてるつもりでしたが、持ってくるものを間違ってました。
これ
を入れないといけないのに、これ
を持ってきてました。うっかり。で、
(use dbi) (use dbd.pg) (dbi-open? (dbi-connect "dbi:pg:dbname=test;port=5432;host=example.com" :username "postgres" :password "hoge")) ;; -> #tところで、dbi 周りには transaction 系の api がなさげ?with-transaction 的なものが欲しいです。取りあえず自前で用意することになりそうですかね。
で、ネットに落ちてる gauche-dbd-* を用いたコードを眺めていましたが、あまりたくさんはなさそうですね。。
Ruby の ActiveRecord みたいのを mop で実現してる(?)のがなんかすごそう。
2011/02/03
postgres timestamp
ということで @kikuchan98 さんに聞いてみたら、どうやら欲しいのは timestamp 型っぽい。
postgres=# select current_timestamp; now ------------------------------- 2011-02-02 13:50:27.402093+09 (1 行) postgres=# select extract(epoch from current_timestamp); date_part ------------------ 1296622247.69678 (1 行) postgres=#
たまに日付を扱うときに int 型で扱ってる DB ありませんか。datetime 型じゃなくて int 型を使うメリットって何かあるんでしょうか。話によると varchar なとこもあったりするそうでェ。
実際、昔勤めていた会社が日付を int 型で扱ってたんですよね。20110203 みたいな。理由を聞いてもハッキリしたことは教えてもらえませんでした。なんとなく、だったのかな。お陰で日付を扱うのが面倒でしたよ。
2011/01/28
PostgreSQL のストアドを Scheme で
裏では Guile が動くみたいです。
まだ PostgreSQL 自体の扱い方がいまいちわかんないような状態なので、これを使うようなことはもう少し先のお話かも。
ようやく Serversman に入れた PostgreSQL にローカルからネットワーク越しにアクセスできるようになったところです。
余談
SQL で木構造扱うのって悩みの種だと思うんですが、RDB 向けのデザインパターンみたいなノリでサンプル集が欲しいなどと思うわけです。こことか参考になります。
日本語ではこういう情報ってあまり見かけませんよね。
SQL で木構造や階層構造を扱うってんで以前、隣接モデルでやったことはあるんですが結構大変でした。
何回 join すんだよ、決め打ちか?みたいな。抽象度低くね?みたいな。
で、今回は Nested Set Model について一通り調べてみて、サンプル書いてみたりしたんですが、これもこれで大変そうな。。
「だったらストアドにすればいいじゃん。ポスグレなら Scheme でも書けるよ。」 「な、なんだってー!」 > ΩΩ Ω ザワザワ
別に Transacto-SQL とかを書くのは嫌いじゃないですけど、Scheme で書けるとなると書いてみたいですね。
あと、もう一つ気になったのが、DB のサンプル少なくないですか?
私が見つけられなかっただけでしょうか。。
「マ○ドナルドのメニューとか CSV で落ちてそうじゃね?」などと思って探してみたり。
郵便番号辞書から階層データ作るのも、なんだかなーだし。
- 飲み物
- ジュース
- オレンジ
- コーラ
- カルピス
- アルコール
- 酒
- 美少年
- ずいよう
- 焼酎
- 米
- 白岳
- 白
- 芋
- 伊佐錦
- 伊佐美
- 白波
- 魔王
- 森伊蔵
- 佐藤
- 霧島
- 黒麹
- 黒伊佐錦
- 黒白波
- 黒佐藤
- 黒霧島
- 麦
- 二階堂
- いいちこ
- 黒糖
- 喜界島
- れんと
- その他
- たんたかたん
- カクテル
- ワイン
- 白
- 赤
- ブランデー
- ウィスキー
- ビール
- 国内
- 国外
- コーヒー
- お茶
- ・・・
できあいのこういうデータがCSVか何かで複数あったらうれしくないですか?
MSSQL だったら pubs, northwind, adventure works なんかもありますし、postgres でも sample DB があるにはありました。
でもなんか、あんまり親切じゃないようなイメージです。
詳しいドキュメントとか、ER 図とか、ER 図とか、あると嬉しいんですけどね。
node.js + postgreSQL
CentOS と Cygwin に入れました。
python が入ってないと要求される
- node.jsとnpmのインストール - 自分の感受性くらい
- SummerWind - node.jsで遊ぶ: インストール編
- node.jsってなんだね。 - futa.ro | blog
- Cygwinや仮想化なしでnode.jsをWindowsへインストール - 自分の感受性くらい
- node.jsをWindows/cygwinにインストールして動かした - クライアント・サイド・スクリプティング with Web Standards
node_postgres の方。
(cygwin には入れてない)
ダウンロードして展開して README よろしく
- MySQLもPostgreSQLもちゃんと使える
- PostgreSQLはRyan謹製のNode.js製クライアントあり
ry's node_postgres
node-waf configure buildで入りました。
で、
npm install .すると、node_postgres 同梱の test.js も無事動きました。
record は配列の配列で返ってくるみたいですね。
lisp.js
今日 @kikuchan98 さんに「node.lisp みたいなのがあるらしいよ」と教えてもらったので検索してみた。これかな。
@kikuchan98 さんは既に node.js でいくつかモノを作られていて、一個見せてもらった。
node.js が動いてるサーバーにとある自作機器がつながっていて、Web 経由で node.js とお話して接続された機器経由でまた別のとあるモノを制御するという一品。
すげー。
もう一個はできてからのお楽しみということで教えてもらえなかった。
きっと #9LISP とかで見せてもらえるに違いない。
自分はといえば、写経とかハンズオンとかそんな状態。。
参考
2011/01/22
serversman(centos) に postgreSQL に Gauche-dbd-pg
今までの仕事では SQL Server メインでした。
あとは MySQL を少し。
今のところ会社ではローカルに SQL Server を入れています。
せっかくなので ServersMan に postgreSQL を入れてみることにしました。
postgreSQL は当初 Lisp で書かれていたとかいないとか。
postgreSQL は Lisp でストアドが書けるとか書けないとか。
そういう話を聞いたことがありますが、まじですか?
postgreSQL
ここを参考に。gauche-dbd-pg
Gauche-dbd-pg-0.2.1 は make でコケて入りませんでした。trunk から持ってきたら、どうやらうまくいったみたいです。
$ gosh
gosh> (use dbi)
#<undef>
gosh> (use dbd.pg)
#<undef>
gosh> (let1 con (dbi-connect "dbi:pg:dbname=test")
(values (dbi-open? con)
(is-a? con <pg-connection>)
(dbi-close con)
(dbi-open? con)))
#t
#t
#<undef>
#f
gosh>
参考
- kazkaz diary - 文字コードエラー , Gauche-dbd-pg 入れた , 現代の医学に失望した
- kazkaz diary - 明日への遺言 - 明日への遺言 , Gauche-dbd-pg , ダライ・ラマ法王日本代表部事務所 , Gauche-dbd-pg を動かしてみる。
- kazkaz diary - 明日への遺言 - 明日への遺言 , Gauche-dbd-pg , ダライ・ラマ法王日本代表部事務所 , Gauche-dbd-pg を動かしてみる。
- Gauche で DBI(Postgresql) - sirocco の書いてもすぐに忘れるメモ
- Gauche-dbd-pg は dbname を指定できない? - 非実在黎明日記
- nao研究室: [gosh]PostgreSQL on Gauche
2011/01/20
カラムのコメントを取得する(mssql)
ここにコメント書いておけば、簡単なテーブル定義書出せるんじゃね?
declare @tablename varchar (30) set @tablename = 'employee' select cols.column_id as col_id ,left(cols.name, 20) as col_name ,left(types.name, 15) as type_name ,cols.max_length as col_length ,(case cols.is_nullable when 0 then 'no' when 1 then 'yes' else 'nothing' end) as nullable ,left(cast(ext.value as varchar), 50) as comment from sys.columns as cols left outer join (select name ,types.system_type_id from sys.types as types where is_user_defined = 0 group by types.system_type_id ,types.name) as types on types.system_type_id = cols.system_type_id left join sys.objects as obj on obj.object_id = cols.object_id left join sys.extended_properties as ext on cols.object_id = ext.major_id and cols.column_id = ext.minor_id where obj.name like @tablename order by column_id go
他
sp_tablessp_columns
sp_pkeys
sp_fkeys
参考
- SQL Server 2005 用 カラム一覧を表示するSQL « zerozero_x space
- SqlServerにてテーブルとカラムの説明を取得するSQL (sys.tables,sys.columns,sys.extended_properties) - いろいろ備忘録日記
Re:Emacs でインタラクティブに SQL する
- sqlcmd を使ってるつもりが、osql だったので sqlcmd に
- ちゃんと追求してないけど、2度目以降の run-mssql で sql-ms-options がおかしくなるので場当たり的な対応 reset/run-mssql 追加
- sql-indent.el のインデントのための正規表現に join 系他を追加
- hook を追加
それと、なぜか sql-indent-buffer, sql-indent-region するとインデントがなくなる・・・。
;; C-c C-c : 'sql-send-paragraph ;; C-c C-r : 'sql-send-region ;; C-c C-s : 'sql-send-string ;; C-c C-b : 'sql-send-buffer (require 'sql) ;; starting SQL mode loading sql-indent / sql-complete (eval-after-load "sql" '(progn (load-library "sql-indent"))) (custom-set-variables `(sql-indent-first-column-regexp ,(concat "^\\s-*" (regexp-opt '("select" "update" "insert" "delete" "union" "intersect" "from" "where" "into" "group" "having" "order by" "set" "create" "drop" "truncate" "left join" "right join" "inner join" "cross join" "on" "left outer join" "right outer join" "inner join" "begin" "rollback" "commit" "and" "or" "go" "--") t) "\\(\\b\\|\\s-\\)"))) (setq auto-mode-alist (cons '("\\.sql$" . sql-mode) auto-mode-alist)) (sql-set-product-feature 'ms :font-lock 'sql-mode-ms-font-lock-keywords) (custom-set-variables '(sql-ms-program "sqlcmd")) (custom-set-variables '(sql-ms-options '("-U" "-P" "-S" "-d"))) (sql-set-product-feature 'ms :sql-program 'sql-ms-program) (sql-set-product-feature 'ms :sqli-prompt-regexp "^[0-9]*>") (sql-set-product-feature 'ms :sqli-prompt-length 5) (sql-set-product-feature 'ms :sqli-login 'sql-ms-login-params) (sql-set-product-feature 'ms :sqli-connect 'sql-connect-ms) (add-hook 'sql-mode-hook #'(lambda () (setq sql-indent-offset 2) (setq sql-indent-maybe-tab t) (local-set-key "\C-cu" 'sql-to-update) (setq sql-pop-to-buffer-after-send-region nil))) (add-hook 'sql-interactive-mode-hook #'(lambda () (set-buffer-process-coding-system 'sjis-unix 'sjis-unix ) (setq show-trailing-whitespace nil) (setq comint-buffer-maximum-size 500) (setq comint-input-autoexpand t) (setq comint-output-filter-functions 'comint-truncate-buffer))) (defun sql-connect-ms () (let ((login-params (mapcar #'(lambda (e) (symbol-value (symb 'sql- e))) sql-ms-login-params))) (let* ((options (mapcar* #'cons sql-ms-options login-params)) (params (fold-right #'(lambda (e acc) (if (cdr e) (append (list (car e)(cdr e)) acc) acc)) nil options))) ;; (setq sql-ms-options (append params (list "-W"))) (setq sql-ms-options params) (sql-connect-1 sql-ms-program sql-ms-options)))) (defun run-mssql () (interactive) (sql-product-interactive 'ms)) (defvar backup:sql-ms-options sql-ms-options) (defvar backup:sql-ms-login-params sql-ms-login-params) (defun sql:reset-parameters () (interactive) (setq sql-ms-options backup:sql-ms-options) (setq sql-ms-login-params backup:sql-ms-login-params) (setq sql-user nil) (setq sql-password nil) (setq sql-server nil) (setq sql-database)) (defun reset/run-mssql () (interactive) (sql:reset-parameters) (run-mssql))
他に必要なもの
(defun fold (kons knil ls &rest more) (do ((ls ls (cdr ls)) (more more (mapcar #'cdr more)) (knil knil (apply kons (apply #'list (car ls) (append (mapcar #'car more) (list knil)))))) ((null ls) knil))) (defun fold-right (kons knil ls &rest more) (apply #'fold kons knil (reverse ls) (mapcar #'reverse more)))
(defun mkstr (&rest args) (with-output-to-string (dolist (a args) (princ a))))
参考
2011/01/12
RDB Design Patterns : 「リレーショナルデータベースのデザインパターン」ってないの?
データベースやテーブル設計にもデザインパターン集とかあってもよくね?と思って検索したら、Stack Overflow にスレッドがありました。
メモがてら。
「リファクタリング―プログラムの体質改善テクニック」のマーティン・ファウラー先生はデータベースのことも書いてらっしゃるんですね。
本
これが和訳?
他のスレッドに出てた本
- SQL Design Patterns: Expert Guide to SQL Programming (It in-Focus Series)
- Data Model Patterns: Conventions of Thought
- Data Model Patterns: A Metadata Map (The Morgan Kaufmann Series in Data Management Systems)
- Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)
- Data Modeling Essentials, Third Edition (The Morgan Kaufmann Series in Data Management Systems)
- Applied Mathematics for Database Professionals (Expert's Voice)
ウェブサイト
さっきの本の。ER 図たくさん。正直、よくわからん。
これはデータベース初級者から上級者への道的な何か?
これはまさにデータベースデザインパターン?
わからん。けど取りあえずそれっぽいものを。
- Star schema - Wikipedia, the free encyclopedia
- Snowflake schema - Wikipedia, the free encyclopedia
- Data Warehouse Schema Architecture - fact constellation schema
プログラマのためのSQL第四版
「プログラマのためのSQL 第2版」は本屋でもよく見かけますね。ぶ厚いやつですよね。これって、第二版なのか。第三版、第四版は翻訳されないんでしょうか。この辺りって、日本語の情報が少なくないですか?誰か和訳たのむ。。
ER図エディタ
2011/01/11
Emacs でインタラクティブに SQL する (Microsoft SQL Server 2005 編)
下記の設定は Microsoft SQL Server ですが、少し書き換えれば他の RDB でも使えるはずです。
今回対象にしたのは, SQL Server 2005 です。
必要なものは
auto-install で入りました。なかなか便利になりました。
以下設定。
.emacs
;; C-c C-c : 'sql-send-paragraph ;; C-c C-r : 'sql-send-region ;; C-c C-s : 'sql-send-string ;; C-c C-b : 'sql-send-buffer (require 'sql) (add-hook 'sql-interactive-mode-hook #'(lambda () (interactive) (set-buffer-process-coding-system 'sjis-unix 'sjis-unix ) (setq show-trailing-whitespace nil))) ;; starting SQL mode loading sql-indent / sql-complete (eval-after-load "sql" '(progn (load-library "sql-indent") (load-library "sql-complete") (load-library "sql-transform"))) (setq auto-mode-alist (cons '("\\.sql$" . sql-mode) auto-mode-alist)) (sql-set-product-feature 'ms :font-lock 'sql-mode-ms-font-lock-keywords) (defcustom sql-ms-program "sqlcmd" "Command to start sqlcmd by SQL Server." :type 'file :group 'SQL) (sql-set-product-feature 'ms :sql-program 'sql-ms-program) (sql-set-product-feature 'ms :sqli-prompt-regexp "^[0-9]*>") (sql-set-product-feature 'ms :sqli-prompt-length 5) (defcustom sql-ms-login-params '(user password server database) "Login parameters to needed to connect to mssql." :type '(repeat (choice (const user) (const password) (const server) (const database))) :group 'SQL) (defcustom sql-ms-options '("-U" "-P" "-S" "-d") "List of additional options for `sql-ms-program'." :type '(repeat string) :group 'SQL) (defun sql-connect-ms () "Connect ti SQL Server DB in a comint buffer." ;; Do something with `sql-user', `sql-password', ;; `sql-database', and `sql-server'. (let ((f #'(lambda (op val) (unless (string= "" val) (setq sql-ms-options (append (list op val) sql-ms-options))))) (params `(("-U" . ,sql-user)("-P" . ,sql-password) ("-S" . ,sql-server)("-d" . ,sql-database)))) (dolist (pair params) (funcall f (car pair)(cdr pair))) (sql-connect-1 sql-ms-program sql-ms-options))) (sql-set-product-feature 'ms :sqli-login 'sql-ms-login-params) (sql-set-product-feature 'ms :sqli-connect 'sql-connect-ms) (defun run-mssql () "Run mssql by SQL Server as an inferior process." (interactive) (sql-product-interactive 'ms))
初めは osql を使おうとしていたのですが、クエリを投げたあと戻ってきませんでした。。
osql をやめて sqlcmd に変えたらうまく動いたみたいです。
SQL Server の設定
osql, sqlcmd
osql, sqlcmd を単体で使う場合。>osql -U username -S servername
>osql -U usename -S servername -d pubs -i test.sqlsqlcmd も同様。
Emacs version
Emacs のバージョンは (emacs-version) してみたら"GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600)でした。
of 2010-07-02 on YAMALOK"
追記
sqli-prompt-regexp のとこと、sql-connect-ms を少し書き換えました。2009/09/02
SharePoint SP2 適用後の構成ウィザードエラー
「SharePoint 製品とテクノロジの構成ウィザード」にて
今回はOffice Projectをインストールした際。
例外メッセージ
サーバー上でエラーが発生しました。http://go.microsoft.com/fwlink?LinkID=96177
イベントログ確認
hoge 上のデータベース WSS_Content のスキーマ バージョン (3.1.3.0) は、foo 上の予期されたデータベース スキーマ バージョン (3.1.8.0) と一致しません。データ損失を防ぐため、このサーバーからこのデータベースへの接続はブロックされました。Web フロント エンドまたはコンテンツ データベースをアップグレードして、これらのバージョンを一致させてください。
解決方法を検索
「イベント ログに記載されている関連データベースそれぞれに関して、データベース内の Versions テーブルにアクセスし、スキーマ バージョンの古い数字を新しい数字に (手動で) 変更しなければならない」
http://blogs.microsoft.co.il/blogs/adlaim/archive/2007/10/26/the-schema-version-3-0-149-0-of-the-database-sps-content-db-on-moss.aspx(英語)
2009/05/11
[Sql][bat]bcpでSelect文を実行する
bcp "USE DbName Select * From HogeTable" queryout "c:\select.log" -t "," -c -U user -P ****
osqlの方が一般的ですね。
@osql -Uuser -P**** -Sservername -ddbname -q "SELECT * FROM HogeTable"
[Sql]バックアップ
メモ。データベースバックアップ。MSSQL。
dbback.sql
BACKUP DATABASE [TableName] TO DISK = N'\\ServerName\Common\TableName.bak' |
dbback.bat
osql -S (local) -U sa -P -i dbBack.sql -o dbBack.log |