MSSQLの仕事の中でよく使う小さい技巧
3021 ワード
大体20日近く自分がブログを书いていないことを见て、1つは国庆节の前に会社の仕事がいつも比较的に繁雑なためで、国庆节自分も休みが必要で、2つはいくつかの新しいものを学ぶためで、会社は1日SQLを书いて家に帰って以前のノートを见て、感じはまだ悪くなくて、贴ってみんなに参考にしてもらいます:
1.同一サーバーの異なるデータベース間のデータのインポート
このことはデータのインポートに関することですが、データベースを頻繁に操作する場合に多く使われるはずです.ビジネスシーンでは、FlyElephantのDataSourceTypeのデータを新しいデータベースのDataSoureTypeテーブルにインポートします.
2.異なるサーバ間の異なるデータベース間のデータのインポート
まずSQL文を見てみましょう
まず、このストレージ・プロシージャを使用してリンクを作成します.
接続を確立してからログイン情報を作成するには、window認証ログインとSQL認証ログインの2つのログイン方法があります.
ダイレクト・クエリー・データ
データの挿入は前の項目を参照してください.リモート・データベースを呼び出すときは、接続の名前を追加するだけでいいです.
3.データベースの簡単な連結表更新
ビジネスシーン:あるテーブルにフィールドを追加する必要があり、別のテーブルのデータをインポートする必要がある場合に操作しました.具体的には、個人のビジネスニーズを参照してください.
4.クエリー・テーブルのフィールド
この使用は比較的に少なくて、その時自分で操作した1枚の表の中に100余りのフィールドがあって、ボスは次の表の中でどれだけのフィールドがデータを保存したかを聞きたいと思って、私は1つの数がおっくうで、検索して記録しました:
そのうちsysobjectsはシステムテーブルであり、主にシステムに存在するテーブル、トリガ、ストレージプロセスなどを格納する.Syscolumnsはシステムテーブルでもあり、主にテーブルのフィールド列を格納するために使用されます.データベース内に作成された各オブジェクト(制約、デフォルト、ログ、ルール、ストレージ・プロシージャなど)はsysobjectsテーブルに1行ずつ表示されます.tempdbでは、テーブルに1行を占めるのは一時オブジェクトのみです.
5.外部キー制約のあるテーブルの削除
データベースにあるデザインに問題があり、元のテーブルのデザインに関連があることに気づきました.このとき、直接Dropに行くと間違いが報告されます.例えば、2枚のテーブルがあり、1枚はPerson(ID,Name)、1枚はUser(ID,PersonID,UserName)、UserテーブルにPersonテーブルのデータが保存されています.直接DropテーブルPersonの場合はヒントになり、対象の「Person」を削除できません.このオブジェクトはFOREGN KEYコンストレイントによって参照されているためです.
外建名を検出する:
外部キーの削除(表は上のreferenceTable Name、外部キーは上のnameフィールド)
あまり深いものもありません.以前の仕事で出会ったことです.今日はまとめてみました.もしあなたに役に立つなら、ついでにお勧めしましょう.
1.同一サーバーの異なるデータベース間のデータのインポート
このことはデータのインポートに関することですが、データベースを頻繁に操作する場合に多く使われるはずです.ビジネスシーンでは、FlyElephantのDataSourceTypeのデータを新しいデータベースのDataSoureTypeテーブルにインポートします.
set identity_insert DataSourceType on
insert into DataSourceType(OID , DataSourceName, OptimisticLockField, GCRecord)
select OID, DataSourceName, OptimisticLockField , GCRecord from FlyElephant.dbo. DataSourceType a where
not exists( select DataSourceType. OID from DataSourceType where a.OID= DataSourceType.OID )
set identity_insert DataSourceType off
2.異なるサーバ間の異なるデータベース間のデータのインポート
まずSQL文を見てみましょう
select * from sysobjects where name='sp_addlinkedserver'
まず、このストレージ・プロシージャを使用してリンクを作成します.
EXEC sp_addlinkedserver 'FlyElephantLink', '','SQLOLEDB' ,'192.168.0.9'
接続を確立してからログイン情報を作成するには、window認証ログインとSQL認証ログインの2つのログイン方法があります.
EXEC sp_addlinkedsrvlogin 'FlyElephantLink'
EXEC sp_addlinkedsrvlogin 'FlyElephantLink', 'false',null,'sa' ,'123456'
ダイレクト・クエリー・データ
SELECT * FROM FlyElephantLink.TestDB.dbo.TestTable
データの挿入は前の項目を参照してください.リモート・データベースを呼び出すときは、接続の名前を追加するだけでいいです.
3.データベースの簡単な連結表更新
ビジネスシーン:あるテーブルにフィールドを追加する必要があり、別のテーブルのデータをインポートする必要がある場合に操作しました.具体的には、個人のビジネスニーズを参照してください.
update [User] set [User].Age= People.Age from [User] inner join People on [User].ID= People.UserID
4.クエリー・テーブルのフィールド
この使用は比較的に少なくて、その時自分で操作した1枚の表の中に100余りのフィールドがあって、ボスは次の表の中でどれだけのフィールドがデータを保存したかを聞きたいと思って、私は1つの数がおっくうで、検索して記録しました:
select name from syscolumns where id=( select id from sysobjects where xtype= 'u' and name= ' ' )
そのうちsysobjectsはシステムテーブルであり、主にシステムに存在するテーブル、トリガ、ストレージプロセスなどを格納する.Syscolumnsはシステムテーブルでもあり、主にテーブルのフィールド列を格納するために使用されます.データベース内に作成された各オブジェクト(制約、デフォルト、ログ、ルール、ストレージ・プロシージャなど)はsysobjectsテーブルに1行ずつ表示されます.tempdbでは、テーブルに1行を占めるのは一時オブジェクトのみです.
5.外部キー制約のあるテーブルの削除
データベースにあるデザインに問題があり、元のテーブルのデザインに関連があることに気づきました.このとき、直接Dropに行くと間違いが報告されます.例えば、2枚のテーブルがあり、1枚はPerson(ID,Name)、1枚はUser(ID,PersonID,UserName)、UserテーブルにPersonテーブルのデータが保存されています.直接DropテーブルPersonの場合はヒントになり、対象の「Person」を削除できません.このオブジェクトはFOREGN KEYコンストレイントによって参照されているためです.
外建名を検出する:
select
a.name,a.object_id,OBJECT_NAME(a.parent_object_id) as referenceTableName
from sys.foreign_keys as a
join sys.objects as o on a.referenced_object_id=o.object_id
where o.name='Person'
外部キーの削除(表は上のreferenceTable Name、外部キーは上のnameフィールド)
alter table dbo.[User] drop constraint FK_User_Person
あまり深いものもありません.以前の仕事で出会ったことです.今日はまとめてみました.もしあなたに役に立つなら、ついでにお勧めしましょう.