【先着1,000名様!】1,000円分をプレゼント!

「SQL Server Management Studio」でコードを入力していると
すぐに日本語入力がオフになってしまいます。

そんな仕様なんでしょうか?
又、そのために項目名をアルファベットにしているのでしょうか?
他の事情もあるのでしょうか?

命令(予約語)との区別も視覚的に一目瞭然なので日本語にしたいのですが、
いちいちIMEを切り替えるのが面倒なので、他に事情がなければ
Editor等を使ってコピペすることも検討しようと思っています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

昔はシステム的な制約からダブルバイト文字を使わないのが常識でしたが、今や項目名は日本語にすることも多いようですね。

一目瞭然なのはメリットですね。システム的な制約もほぼないでしょう。

私は項目名を日本語にしない派ですが、項目名を日本語にしない理由は「日本語が入ると書きづらいから」です。質問者さんと同じで、日本語を使うとIMEを切り替えるのが面倒臭いです。
(クエリを書くスピードも倍以上違います。[]を入れるのも面倒だし、全角スペースいれるとエラー探すのも手間がかかりますしね)
また、日本人以外のいる環境で開発したことがある人は無条件で項目に日本語名は使わないです。

ただ、別にエディタを使うのは問題ないと思います。
(私のまわりにも秀丸とか使っている人はいます。傾向として古くからOracleを使っていた人はEditorを使う人が多いです)

なお、SSMSですぐIMEが元に戻るというのは仕様というより不具合のような気がします。逆に私は半角英数で普通に打っているのに、たまに勝手にIMEが切り替わって戻らなくなって困ることがあります(これはSSMSを再起動すると治りますが)
    • good
    • 0
この回答へのお礼

いつもありがとうございます。

アップサイジングしたDBは日本語になっていますので、
このシステムは二バイト文字でやってみて、
次のシステムまでに答えをだそうと思います。

もう一つ質問です・・・
二バイト文字を使わない場合ですが、大文字小文字を
使い分けていますか?
命令は大文字とか、項目名の先頭は大文字で始めるとか

お礼日時:2008/10/27 11:29

>二バイト文字を使わない場合ですが、大文字小文字を


使い分けていますか?
命令は大文字とか、項目名の先頭は大文字で始めるとか

完全に好みの問題だと思いますよ。正直、人それぞれだと思います。
私は、といえば全部大文字にしています。複数の開発メンバーで作業したときに標記がブレる可能性が高いから、そのような標記ルールにしています。一方で、単語の切れ目が分かりにくくなるため、「_」を入れることが多くなるのがデメリットです。
    • good
    • 0
この回答へのお礼

ありがとうございました、これで次のステップへ進めます。

お礼日時:2008/10/28 14:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QSQL Server Management Studio Express を使ってのデータベース削除

Microsoft SQL Server Management Studio Express を使ってSQLを学んでいる入門者です。使用方法でわからない事があるので教えてください。
以下はすべてMicrosoft SQL Server Management Studio Express上での作業です。
(1)'TEST'の名前で新しいデータベースを作成
(2)作成されたデータベース'TEST'のアイコンを右リック→タスク→バックアップで、データベースをバックアップ
ここまでの操作で"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup"フォルダには'TEST.bak'でバックアップファイルが作成されました。
次に
(3)作成されたデータベース'TEST'のアイコンを右リック→削除→「バックアップを削除し、データベースの履歴情報を復元する」にチェックが入っているので、そのまま実行。
質問ですが、以上の操作を行えばデータベース本体の他に(2)で作成されたバックアップファイル'TEST.bak'も削除されると思ったのですが、そのまま削除されずに残ってしまいます。
(3)の「バックアップを削除し、データベースの履歴情報を復元する」のオプションはどういう意味なのでしょうか。ヘルプを参照しましたが、やはりバックアップファイルは削除されるのではないかと思うのですが・・

Microsoft SQL Server Management Studio Express を使ってSQLを学んでいる入門者です。使用方法でわからない事があるので教えてください。
以下はすべてMicrosoft SQL Server Management Studio Express上での作業です。
(1)'TEST'の名前で新しいデータベースを作成
(2)作成されたデータベース'TEST'のアイコンを右リック→タスク→バックアップで、データベースをバックアップ
ここまでの操作で"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup"フォルダには'TEST.bak'でバックアップファイルが...続きを読む

Aベストアンサー

実際に 2タイプの削除操作の際にバックでどんな T-SQL が動いているか、SQL Server Management Studio の [ツール]-[SQL Server Profiler] でトレースして確認することができます。
実験したデータベースは作って間もない、テーブルも作ってないデータベースです。

大きく違うのは、
[バックアップを削除し、データベースの履歴情報を復元する] にチェックを入れた場合は sp_delete_database_backuphistory というストアド プロシージが実行され、その後に DROP DATABASE が実行されるのに対し、
[バックアップを削除し、データベースの履歴情報を復元する] にチェックを入れなかった場合は DROP DATABASE だけが実行されていました。
(実際にはその過程でいろんな SELECT が動いてます)

バックアップのファイルを物理的に削除するというよりは、システム DB などに記録されている「バックアップの履歴」を削除するというイメージじゃないですかね。

バックアップしたファイルは SQL Server からするとバックアップした瞬間から外部ファイルであって、SQL Server の管理外にあるファイルになるんだと思います。

余談ですが、SQL Server Profiler というツールはかなり便利なツールです。
Management Studio のような GUI ツールで DB を操作した時、実際に SQL Server 上ではどんな SQL 文を実行しているのかが分かりますので、例えば自作の Web ブラウザ版 Management Studio のようなツールを開発するのにも役立ちます。

実際に 2タイプの削除操作の際にバックでどんな T-SQL が動いているか、SQL Server Management Studio の [ツール]-[SQL Server Profiler] でトレースして確認することができます。
実験したデータベースは作って間もない、テーブルも作ってないデータベースです。

大きく違うのは、
[バックアップを削除し、データベースの履歴情報を復元する] にチェックを入れた場合は sp_delete_database_backuphistory というストアド プロシージが実行され、その後に DROP DATABASE が実行されるのに対し、
[バックア...続きを読む

Qテーブル名を[]でくくらないとエラーになってしまう

テーブル名を[]でくくらないとエラーになってしまいます

sqlserver 2008 express edition を利用しているのですが

テーブル名 やカラム名に[]でくくってSQL文を実行しないと
エラーが出てしまいます
例えば

select * from [table]  の様にしないといけません
これを
select * from table で実行できるようにしたいのです
どうしたらいいのでしょうか

会社ではsqlserver2005を利用しているので
2008からは[]でくくる必要になったのでしょうか

それとも初期設定で何かしないといけないのでしょうか
設定方法を教えて下さい

sqlserver management studio2008もインストール済みです

Aベストアンサー

「table」はSQLの予約語です。そのため初期設定などで、「table」をそのままSQL文に使用することは出来ません。これは他のRDBも同様です。
SQL SERVERでは[]で括ることで、予約語をオブジェクト名に出来ますが、おすすめは出来ません。
なお、ANSI/ISOの標準規格では「"(ダブルクォーテーション)」で括ることで、同様にエラーを回避できます。SQL SERVERでも初期設定でANSI/ISOと同様に「"」で括るモードにすることは出来ますが、それでも予約語である以上何らかの対応は必要です。

> 会社ではsqlserver2005を利用しているので
> 2008からは[]でくくる必要になったのでしょうか

そんなことはないはずです。

Q文字列をsplitするSQL文を教えて下さい

SQLServer2000上で指定した文字で文字列をsplitような関数があれば教えて頂けますか?

例えば"12345.6789"という文字列を"."(ピリオド)を指定して、"12345"と"6789"という2つの文字列を取得したいと思っています。

Transact-SQLの関数リファレンスを見てみたのですが、適当なものが見つかりませんでした。
自作するしかないのでしょうか・・

Aベストアンサー

見当たりませんね~。

declare @str1 nvarchar(1),@str2 nvarchar(50)
select @str1 =N'.',@str2 = N'12345.6789'
select
substring(@str2,1,charindex(@str1,@str2)-1) as 前,
substring(@str2,charindex(@str1,@str2)+1,len(@str2)-charindex(@str1,@str2)) as 後

こんな感じにしかできないみたいです

QSELECT文で、指定カラム以外の全カラムを一括指定って可能でしょうか

SELECT文で、指定カラム以外の全カラムを一括指定って可能でしょうか?
MYSQLサーバのバージョンは5.0.77です。

下記のように「*」を使用して指定テーブルの全カラムを表示する方法がありますが、
SELECT TableName.* FROM TableName

上記の逆で、指定テーブルの指定カラム以外の全カラムを一括指定って可能でしょうか?
例えば下記のような「^」みたいな、又は同等な書き方があれば良いなと思ってまして。
SELECT TableName.^ColumnName1 FROM TableName

ちなみに、下記のように一つ一つ表示したいカラムを指定する方法以外です。
SELECT TableName.ColumnName2 , TableName.ColumnName3 FROM TableName

よろしくお願いします。

Aベストアンサー

ない。
SQL文でそんなことをするより、メソッドとして作ればいいんじゃないですか。
だいたい、それ以外のカラムの数がわからないし、並びも不明だし。

#1に方と同じで
SELECT * from xxxx
なんてのは正気の人間は書きません。
カラムの数も位置も属性もわからないSQL文の結果をどうやって扱うのか。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング