MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメントの完全なリストを以下に示します。見てみましょう。 1. 説明: データベースを作成する CREATE DATABASE database-name 2. 説明: データベースの削除 drop database dbname 3. 説明: SQL をバックアップする サーバ --- データをバックアップするためのデバイスを作成する 使用 マスター EXEC sp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat' --- バックアップを開始 BACKUPDATABASE pubsTO testBack 4. 説明: 新しいテーブルを作成します。create table tabname (col1 type1 [nullではない] [主キー],col2 type2 [nullではない]、..) 既存のテーブルに基づいて新しいテーブルを作成します。 A: tab_oldのようなテーブルtab_newを作成します (古いテーブルを使用して新しいテーブルを作成します) B: テーブル tab_new を作成し、tab_old から col1、col2… を選択します 定義のみ 5. 説明: 新しいテーブルを削除します。drop table tabname 6. 説明: 列を追加する Alter table tabnameadd column col タイプ 注意: 列を追加すると、削除することはできません。 DB2 では、列を追加した後にデータ型を変更することはできません。変更できるのは、varchar 型の長さを増やすことだけです。 7. 説明: 主キーの追加: Alter table tabname add primary key (col) 説明: 主キーを削除します: Alter table tabname drop primary key (col) 8. 説明: インデックスを作成します: create [unique]index idxnameon tabname(col…) インデックスを削除します: drop index idxname 注意: インデックスは変更できません。変更する場合は、インデックスを削除して再構築する必要があります。 9. 説明: ビューを作成する: create view viewnameas select statement ビューを削除する: drop view viewname 10. 説明: いくつかの簡単な基本 SQL 文 選択: select * from table1 where 範囲挿入: insert into table1 (field1, field2) values (value1, value2) 削除: delete from table1where 範囲更新: update table1set field1=value1where 範囲検索: select *from table1where field1like '%value1%'---like の構文は非常に微妙なので、情報を確認してください。 並べ替え: テーブル1から*を選択、フィールド1、フィールド2で並べ替え [説明] 合計: テーブル1から合計カウントとしてカウントを選択 合計: テーブル1からsum(field1)をsumvalueとして選択します 平均: table1からavg(field1)をavgvalueとして選択します 最大: テーブル1からmax(フィールド1)をmaxvalueとして選択します 最小値: テーブル1からmin(field1)をminvalueとして選択します 11. 説明: いくつかの高度なクエリ演算子 A: UNION 演算子 UNION 演算子は、他の 2 つの結果テーブル (たとえば、TABLE1 と TABLE2) を結合し、テーブル内の重複行を削除して結果テーブルを派生します。 ALL を UNION と一緒に使用すると (つまり、UNION ALL)、重複行は削除されません。どちらの場合も、派生テーブルの各行は TABLE1 または TABLE2 から取得されます。 B: EXCEPT 演算子 EXCEPT 演算子は、TABLE1 にはあるが TABLE2 にはないすべての行を含め、重複する行をすべて削除して結果テーブルを導出します。 ALL を EXCEPT (EXCEPT ALL) と一緒に使用すると、重複行は削除されません。 C: INTERSECT 演算子 INTERSECT 演算子は、TABLE1 と TABLE2 の両方に存在する行のみを含め、重複する行を排除して結果テーブルを導出します。 ALL を INTERSECT (INTERSECT ALL) と共に使用すると、重複行は削除されません。 注意: 演算子を使用するクエリ結果の行は一貫している必要があります。 12. 説明: 外部結合A、左(外部)結合を使用します。 左外部結合 (左結合): 結果セットには、結合されたテーブルの一致する行と、左結合されたテーブルのすべての行が含まれます。 SQL: aaを選択し、 ab、ac、bc、bd、bf を a から外して bON aa に結合 =紀元前 B: 右(外部)結合: 右外部結合 (右結合): 結果セットには、結合テーブルの一致する結合行と右結合テーブルのすべての行の両方が含まれます。 C: フル/クロス(外部)結合: 完全外部結合: シンボリック結合テーブルの一致する行だけでなく、結合された 2 つのテーブル内のすべてのレコードも含まれます。 12. グループ化: テーブルをグループ化すると、クエリ後にグループ関連の情報のみを取得できるようになります。 グループ関連情報: (統計情報) count、sum、max、min、avg (グループ化基準) SQL Server でグループ化する場合: 選択統計関数でグループ化の基準として text、ntext、または image フィールドを使用することはできず、それらを通常のフィールドと組み合わせることもできません。 13. データベースを操作します。 データベースをデタッチします。 sp_detach_db; データベースをアタッチします: sp_attach_db の後にフルパス名が続きます。14. データベースの名前を変更する方法: sp_renamedb '古い名前'、'新しい名前' 2. 改善 1. 説明: テーブルのコピー(構造のみをコピー、ソーステーブル名: a 新しいテーブル名: b) (アクセス可能) 方法 1: select * into b from a where 1<>1 (SQL Server のみ) 方法2: 上位0を選択 * aからbへ 2.説明: テーブルのコピー(コピーデータ、ソーステーブル名: a 対象テーブル名: b) (アクセス可能) b(a, に挿入する b、c) bからd、e、fを選択します。 3. 説明: データベース間でテーブルをコピーする (特定のデータに絶対パスを使用) (アクセス可能) b(a, に挿入する b、c) select d、e、ffrom bin '特定のデータベース' where 条件の例: ..from bin '"&Server.MapPath(".")&"\data.mdb" &"' どこ.. 4. 説明: サブクエリ (テーブル名 1: a テーブル名2: b) aINでa、b、cからaを選択(bからdを選択 ) または: aIN (1,2,3) の a,b,c から a を選択 5. 説明: 記事、投稿者、最終返信時間を表示します。テーブル a から a.title、a.username、b.adddate を選択します。(select max(adddate) テーブルから日付を追加します (table.title=a.title) b 6. 説明: 外部結合クエリ (テーブル名 1: a テーブル名2: b) aaを選択、 ab、ac、bc、bd、bf を a から外して bON aa に結合 =紀元前 7. 説明: オンラインビュークエリ(テーブル名1: a ) *from (SELECT a,b,cFROM a) から選択 どこですか > 1; 8. 注意: betweenの使用法: betweenはクエリデータの範囲を制限するときに境界値を含みますが、not betweenはselect *from table1where time between time1and time2を含みません。 テーブル1から、値1と値2の間にないa、b、cを選択します。 9. 説明: select * from table1での使用方法 [not]in ('値 1'、'値 2'、'値 4'、'値 6') 10. 説明: 2 つの関連テーブル。セカンダリ テーブルに存在しないプライマリ テーブルの情報を削除します。 (table1.field1=table2.field1 の table2 から * を選択 ) 11. 注: 4 つのテーブルの結合クエリの問題: *を aleft から選択し、内部結合 bon aa=b.bright を con aa=c.c から結合し、don aa=d.d を結合します。ここで ..... 12. 説明: 5 分前にリマインダーをスケジュールする SQL: select * from schedule where datediff('minute',f start time,getdate())>5 13. 説明: SQL データベースのページングを解決するためのステートメントはトップ 10 を選択します b.* (上位20件を選択) 主キー フィールド、テーブル名からのソート フィールド (ソート フィールドの降順による順序) a、テーブル名 b、b. 主キー フィールド = a. 主キー フィールド order by a. ソート フィールド固有の実装: データベースのページングについて: @startint,@end int を宣言します @sql nvarchar(600) @sql='select top'+str(@end-@start+1)+'+from Twhere ridnot in(select top'+str(@str-1)+'Ridfrom Twhere Rid>-1)' を設定します。 sp_executesql を実行する @sql 注: 変数の直後に top を続けることはできないため、実際のアプリケーションでは、このタイプの特別な処理のみが実行されます。 Rid は識別列です。これは、top の後に特定のフィールドがある場合に非常に役立ちます。これにより、最上位フィールドが論理インデックスである場合に、クエリ結果後の実際のテーブルでの不整合を回避できます (論理インデックスのデータはデータ テーブルと不整合になる可能性があり、クエリ中にインデックス内にある場合は、最初にインデックスがクエリされます)。 14. 説明: 最初の10件のレコードの上位10件を選択 * フォーム table1 where 範囲 15、説明: 同じ b 値を持つ各データ グループで、a が最大であるレコードのすべての情報を選択します (同様の使用法は、月間フォーラム ランキング、月間売れ筋製品分析、科目成績によるランキングなどに使用できます) テーブル名から a、b、c を選択します ta where a=(select max(a)from tablename tb(tb.b=ta.b) 16. 説明: TableAのすべての行を含め、TableBとTableCには含めず、重複する行をすべて削除して結果テーブルを作成します(tableAからaを選択) ) 除く (表Bからaを選択) 除く (表Cからaを選択) 17. 説明: ランダムに10個のデータポイントを抽出し、上位10個を選択 * tablenameorder から newid() で 18. 説明: レコードをランダムに選択する select newid() 19. 説明: 重複レコード 1) を削除します。delete from tablenamewhere idnot in (select max(id)from tablenamegroup by col1,col2,...) 2)、tablenameからtempにdistinct *を選択します。 テーブル名から削除 テーブル名に挿入 *tempから選択 評価する: この操作は大量のデータの移動を伴うため、大容量のデータ操作には適していません。3) たとえば、外部テーブルにデータをインポートする場合、何らかの理由で最初はその一部だけがインポートされますが、特定の場所を特定することが難しいため、次回はデータ全体をインポートするしかなく、多くの重複フィールドが生成されます。重複フィールドを削除するにはどうすればよいでしょうか? alter table tablename --自動増分列を追加する add column_bint identity(1,1) テーブル名から削除、列_bに含まれない( テーブル名グループから列1、列2、... によって max(列b) を選択します。 テーブル tablename を変更し、列 column_b を削除します 20. 説明: データベース内のすべてのテーブル名を一覧表示する select name from sysobjectswhere type='U' // U はユーザー 21 を表します。説明: テーブル内のすべての列名を一覧表示します。select name from syscolumnswhere id=object_id('TableName') 22. 説明: type、vender、pcs フィールドを type フィールド順に一覧表示します。case は、select の case と同様に、複数の選択を簡単に実装できます。 type を選択し、sum(case venderwhen 'A' then pcselse 0end)、sum(case venderwhen 'C' then pcselse 0end)、sum(case venderwhen 'B' then pcselse 0end) から tablenamegroup by type 結果を表示: タイプ ベンダーPC コンピュータA 1 コンピュータA 1 ディスクB2 ディスクA2 携帯電話B3 モバイルC 3 23. 説明: テーブル table1 を初期化する テーブルテーブル1を切り捨てる 24. 説明: 10~15のレコードを選択し、上位5つを選択 * (上位15件を選択) * 表の順序はidascによる) table_alias iddesc による順序 ヒント 1: 1=1 と 1=2 の使用。「where 1=1」は、SQL ステートメントの組み合わせでよく使用されます。 これは、「1=2」のすべてを選択し、すべて選択解除することを意味します。 のように: もし @strWhere != '' 始める @strSQL を設定する = '選択 count(*) を合計として [' + @tblName + '] ここで ' + @strどこ 終わり それ以外 始める @strSQL を設定する = '選択 count(*) を合計として [' + @tblName + ']' 終わり エラーとして書き込むこともできます。ディレクトリエントリが見つかりません。 @strSQL を設定する = '選択 count(*) を合計として [' + @tblName + '] ここで1=1安定'+ @strWhere 2. データベースを縮小する - インデックスを再構築する DBCC 再インデックス 企業 インデックスデフラグ --データを縮小してDBCCをログに記録する SHRINKDB 企業 シュリンクファイル 3. データベースを圧縮する dbcc 縮小データベース(db名) 4. 既存のユーザー権限を持つ新しいユーザーにデータベースを転送します。exec sp_change_users_login'update_one','newname','oldname' 行く 5. バックアップセットの復元を確認する ディスク='E:\dvbbs.bak' からのみ検証 6. データベースを修復する ALTER DATABASE [dvbbs] SET SINGLE_USER 行く 企業 CHECKDB('dvbbs',repair_allow_data_loss)タブブロック付き 行く ALTER DATABASE [dvbbs]SET MULTI_USER 行く 7. ログクリア SET NOCOUNTON @論理ファイル名を宣言する システム名、 @MaxMinutesINT、 翻訳: 使用 テーブル名 -- 操作対象となるデータベース名 SELECT @LogicalFileName = 'テーブル名_log',-- ログファイル名 @MaxMinutes = 10、-- ログをラップするのに許可される時間の制限。 @ニューサイズ = 1 -- 設定したいログファイルのサイズ(M) 設定 /初期化 @OriginalSizeint を宣言する @オリジナルサイズを選択 = サイズ sysfilesから 名前 = @論理ファイル名 'オリジナル '+のサイズ db_name() + ' LOGは' + 変換(VARCHAR(30),@元のサイズ) + ' 8Kページまたは' + 変換(VARCHAR(30),(@元のサイズ*8/1024)) + 'MB' sysfilesから 名前 = @論理ファイル名 テーブルDummyTransの作成 (DummyColumnchar (8000) は null ではありません) @Counter INT を宣言します。 @開始時間 日付、時間、 @TruncLog VARCHAR(255) @開始時刻を選択 = GETDATE(), トランログ = 'バックアップ ログ ' + db_name() + ' TRUNCATE_ONLY 付き' 企業 SHRINKFILE (@LogicalFileName、@NewSize) です。 EXEC (@TruncLog) -- 必要に応じて丸太を包みます。 その間 @MaxMinutes > DATEDIFF (mi、@StartTime、GETDATE()) -- 時間はまだ切れていない かつ @OriginalSize = (SELECT size FROM sysfilesWHERE name = @論理ファイル名) および(@OriginalSize) * 8 /1024) > @NewSize 始める - 外側のループ。 @カウンターを選択 = 0 その間 ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) 始める - アップデート INSERT DummyTransVALUES ('Fill ログ')DummyTransを削除 @カウンターを選択 = @カウンター + 1 終わり 実行 (@TruncLog) 終わり '最終'を選択 '+のサイズ db_name() + ' LOGは' + CONVERT(VARCHAR(30),サイズ) + ' 8Kページまたは' + 変換(VARCHAR(30),(サイズ*8/1024)) + 'MB' sysfilesから 名前 = @論理ファイル名 DROP TABLE ダミートランス NOCOUNTOFF を設定 8. 説明: テーブルを変更する exec sp_changeobjectowner'tablename','dbo' 9. すべてのテーブルへの変更を保存する CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch @OldOwneras NVARCHAR(128)、 @NewOwneras NVARCHAR(128) として @Name を NVARCHAR(128) として宣言します。 @Owner を NVARCHAR(128) として宣言します。 @OwnerName を NVARCHAR(128) として宣言します。 curObjectCURSORを宣言する 「名前」を選択 =名前、 「オーナー」= ユーザー名(uid) sysobjectsから ここで、user_name(uid)=@OldOwner 名前順 オープンcurObject FETCH NEXT FROM curObjectINTO @Name、 @所有者 (@@FETCH_STATUS=0) の間 始める もし @オーナー=@旧オーナー 始める @オーナー名を設定する = @OldOwner + '.' + rtrim(@名前) sp_changeobjectowner を実行します @オーナー名、@新オーナー 終わり -- @name、@NewOwner、@OldOwner を選択 FETCH NEXT FROM curObjectINTO @Name、 @所有者 終わり curObjectを閉じる curObject の割り当てを解除する 行く 10.SQL文 直接ループしてSERVERにデータを書き込むには@iintを宣言します @i=1 に設定 その間 @私<30 始める テストに挿入 (ユーザーID) 値(@i) @i=@i+1 と設定する 終わり 例: 次の表では、試験に合格しなかったすべてのスコアを毎回 0.1 ずつ増やして合格にする必要があります。 名前スコア 張山 80 リシ 59 王武 50 ソンクアン 69 while((tb_tableからmin(スコア)を選択)<60) 始める tb_tableset スコアを更新 =スコア*1.01 スコア<60 もし (tb_tableからmin(スコア)を選択)>60 壊す それ以外 続く 終わり データ開発 - クラシック 1. 姓の画数で並べ替えます。 *TableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_asから選択 //少ないものから多いものへ 2. データベースの暗号化: encrypt('元のパスワード') を選択 pwdencrypt('元のパスワード')を選択します pwdcompare('元のパスワード','暗号化されたパスワード') を選択します = 1--同じ; それ以外の場合は異なる encrypt('元のパスワード') pwdencrypt('元のパスワード')を選択します pwdcompare('元のパスワード','暗号化されたパスワード') を選択します = 1--同じ。それ以外は同じではありません 3. テーブル内のフィールドを取得します。 @listvarchar(1000)を宣言します。 @sql nvarchar(1000) sysobjects から @list=@list+','+b.name を選択 a、syscolumns b、ただし a.id=b.id、a.name='Table A' @sql='select' を設定します '+右(@リスト、長さ(@リスト)-1)+' 表Aより 実行 (@sql) 4. ハードディスクのパーティションを確認します。 EXEC マスター..xp_fixeddrives 5. A と B が等しいかどうかを比較します。 もし (Aからchecksum_agg(binary_checksum(*))を選択) = (Bからchecksum_agg(binary_checksum(*))を選択) '等しい' を印刷する それ以外 '等しくない' と印刷する 6. すべてのプロファイラープロセスを終了します。 hcforeachCURSOR GLOBAL FOR SELECT 'killを宣言する '+RTRIM(spid)FROM master.dbo.sysprocesses WHERE プログラム名IN('SQL プロファイラー',N'SQL プロファイラー EXEC sp_msforeach_worker '?' 7. レコード検索: 先頭からN件のレコードを選択 * 表より--------------------------------- N から M のレコード (プライマリ インデックス ID 付き) トップMNを選択 * テーブルからIDin(トップMを選択) ID テーブルから)ID 降順で並べ替え ---------------------------------- レコードの最後までN 上位Nを選択 * 表からIDDescで並べ替え ケース 1: テーブルに 10,000 件を超えるレコードがあります。テーブルの最初のフィールド RecID は自動増分フィールドです。テーブル内の 31 番目から 40 番目のレコードを検索する SQL ステートメントを記述します。 トップ10を選択 どこからの受信か 受信していない場所(上位30件を選択) Aから受け取る 分析: このように記述すると、recid がテーブル内に論理インデックスを持つ場合に問題が発生します。 トップ10を選択 recid from Awhere...はインデックスから検索し、次の上位30件を選択します A の recid がデータ テーブルで検索されます。インデックス内の順序がデータ テーブル内の順序と一致しない可能性があるため、見つかったデータは本来必要なデータではない可能性があります。 解決策1、 上位30件を選択して並べ替える ricid による Aorder からの recid フィールドが自己増加しない場合は、問題 2 が発生します。 そのサブクエリに条件を追加します: select top 30 Aからのrecid、recid>-1 例 2: テーブル内の最後のレコードをクエリしますが、テーブル内のデータの量やテーブル構造がわかりません。 @s を設定する = '選択 T から pid が含まれない上位 1 * (上位 ' + を選択) str(@count-1) + ' pid (T から)' 印刷 @s exec sp_executesql @s 9: 現在のデータベース内のすべてのユーザー テーブルを取得します。select Name from sysobjectswhere xtype='u' and status>=0 10: テーブルのすべてのフィールドを取得する select name from syscolumnswhere id=object_id('table name') syscolumnswhere idinから名前を選択 (sysobjectswhere typeからIDを選択) = 'u'、name = 'テーブル名') 2つの方法の効果は同じです 11: テーブルに関連するビュー、ストアドプロシージャ、および関数を表示する select a.*from sysobjects a、syscomments b、a.id = b.id および b.textlike '%table name%' 12: 現在のデータベース内のすべてのストアド プロシージャを表示します。select name as stored procedure name from sysobjects where xtype='P' 13: ユーザーが作成したすべてのデータベースを照会する select *from master..sysdatabases D で sid が存在しない (name='sa' の master..syslogins から sid を選択) または、master..sysdatabasesからdbid,name AS DB_NAMEを選択します。sid <> 0x01 14: テーブルのフィールドとデータ型を照会する select column_name,data_typefrom information_schema.columns テーブル名 = 'テーブル名' 15: 異なるサーバーデータベース間のデータ操作 - リンクサーバーを作成する exec sp_addlinkedserver 'ITSV ',' ','SQLOLEDB ','リモート サーバー名または IP アドレス' exec sp_addlinkedsrvlogin 'ITSV '、'間違い ',null,'ユーザー名','パスワード' --クエリの例 select *from ITSV.database name.dbo.table name --インポートの例 select *into tablefrom ITSV.database name.dbo.table name --リンクサーバーが使用されなくなったら削除します exec sp_dropserver 'ITSV ','ドロップログイン ' --リモート/LAN データに接続 (openrowset/openquery/opendatasource) --1. オープン行セット --クエリ例 select *from openrowset('SQLOLEDB ','SQL サーバー名';'ユーザー名';'パスワード',データベース名.dbo.テーブル名) --ローカルテーブルを生成する select *into table from openrowset('SQLOLEDB ','SQL サーバー名';'ユーザー名';'パスワード',データベース名.dbo.テーブル名) -- ローカルテーブルをリモートテーブルにインポートします insert openrowset('SQLOLEDB ','SQL サーバー名';'ユーザー名';'パスワード',データベース名.dbo.テーブル名) ローカルテーブルから*を選択--ローカルテーブルを更新 bを更新 b.columnA=a.columnA を設定します openrowset('SQLOLEDB ','SQL サーバー名';'ユーザー名';'パスワード',データベース名.dbo.テーブル名) として ainner join ローカル テーブル b a.column1=b.column1 で --OpenQuery を使用するには接続の作成が必要です--まず、リンク サーバーを作成するための接続を作成します exec sp_addlinkedserver 'ITSV ',' ','SQLOLEDB ','リモート サーバー名または IP アドレス' --クエリ選択* openquery(ITSV, 'SELECTから * FROM database.dbo.テーブル名') -- ローカルテーブルをリモートテーブルにインポートする insert openquery(ITSV, 'SELECT * FROM database.dbo.テーブル名') ローカルテーブルから*を選択--ローカルテーブルを更新 bを更新 b.column B = a.column B を設定します openquery(ITSV, 'SELECTから * FROM database.dbo.テーブル名')として ローカルテーブル b を a に内部結合します。列 A = b。列 A --3. オープンデータソース/オープン行セット 選択* opendatasource('SQLOLEDB '、 'データ ソース=ip/ServerName;ユーザーID=ログイン名;パスワード=パスワード').test.dbo.roy_ta --ローカルテーブルをリモートテーブルにインポートします insert opendatasource('SQLOLEDB '、 'データ ソース = ip/ServerName; ユーザー ID = ログイン名; パスワード = パスワード').Database.dbo. テーブル名 select *from local table SQL サーバー基本関数SQL サーバーの基本機能 1. 文字列関数の長さと分析 1、データ長 (Char_expr) 文字列内の文字数を返しますが、末尾のスペース 2 は含まれません。サブ文字列 (式、開始、長さ) 部分文字列を取得します。文字列の添え字は「1」から始まり、start は開始位置、length は文字列の長さです。実際のアプリケーションでは、len(expression) を使用して長さ 3、right(char_expr, int_expr) を取得します。 文字列の右側のint_expr文字を返し、leftを使用してその逆を行います4、isnull( check_expression、replacement_value) check_expressionが空の場合、replacement_valueの値を返します。空でない場合は、check_expressionを返します。文字操作クラス5、Sp_addtype カスタム データ型、例: EXEC sp_addtype 誕生日、日時、'NULL' 6、カウントなしを設定 {オン|オフ} 返される結果に、Transact-SQL ステートメントによって影響を受ける行数に関する情報が含まれなくなります。ストアド プロシージャに実際のデータをあまり返さないステートメントが含まれている場合、この設定によりネットワーク トラフィックが大幅に削減され、パフォーマンスが大幅に向上します。 SETNOCOUNT 設定は分析時ではなく実行時またはランタイム時に設定されます。 NOCOUNTを設定 ON の場合、カウント (Transact-SQL ステートメントによって影響を受ける行数を示す) は返されません。 NOCOUNTを設定 OFF の場合、カウントが返されます。SQL クエリの常識: from が続くことができるテーブルまたはビューの最大数: 256 SQL ステートメントに Order by が出現する場合、クエリを実行するときに、まず並べ替えてから取得します。SQL では、フィールドの最大容量は 8000 で、nvarchar の場合は 4000 です。これは、nvarchar が Unicode コードであるためです。 SQL Server 2000 同期レプリケーション テクノロジの実装手順 1: 準備 1. スナップショット フォルダを公開するための有効なアクセス ユーザーとして、公開サーバーとサブスクリプション サーバーの両方に同じ名前とパスワードを持つ Windows ユーザーを作成します - 管理ツール - コンピューターの管理 - ユーザーとグループ - ユーザーを右クリック - 新しいユーザー - Windows にログインするための管理者グループに所属するユーザー (SynUser) を作成します 2. 公開サーバー上で、公開されたスナップショット ファイルの保存ディレクトリとして新しい共有ディレクトリを作成し、次の操作を実行します。 マイコンピュータ - D:\ PUBという名前の新しいディレクトリを作成します。 -- 新しく作成したディレクトリを右クリック -- プロパティ -- 共有 -- 「このフォルダを共有する」を選択 --「権限」ボタンから特定のユーザー権限を設定し、最初の手順で作成したユーザー(SynUser)が フォルダへのすべての権限を持っていること - 確認 3. SQL エージェント (SQLSERVERAGENT) サービスのスタートアップ ユーザーを設定します (パブリッシュ/サブスクライブ サーバーの両方でこれを行う必要があります) スタート--プログラム--管理ツール--サービス--SQLSERVERAGENTを右クリック --プロパティ--ログイン--「このアカウント」を選択 --最初の手順で作成した Windows ログイン ユーザー名 (SynUser) を入力または選択します。 --「パスワード」にユーザーのパスワードを入力します 4. SQLを設定します サーバー認証モード。接続時の権限の問題を解決します (パブリッシュ サーバーとサブスクライブ サーバーの両方にこの設定があります) Enterprise Manager - SQLインスタンスを右クリック - プロパティ - セキュリティ - 認証 - 「SQL」を選択 サーバーとWindows --確認 5. パブリッシャーサーバーとサブスクライバーサーバーの両方にEnterprise Managerを登録します --SQLを右クリック サーバー グループ - SQL の作成 サーバー登録... --次へ--利用可能なサーバーで、登録するリモートサーバー名を入力します--追加--次へ--接続方法、2番目の「SQL」を選択します サーバー認証" --次へ--ユーザー名とパスワードを入力します(SynUser) --次へ--SQLを選択 サーバーグループ、新しいグループを作成することもできます--次へ--完了6. IPのみ使用でき、コンピューター名を使用できない場合は、サーバーエイリアスを登録します(この手順は実装では使用されません) (接続側で設定されます。たとえば、サブスクライバー サーバーで設定されている場合、サーバー名はパブリッシャー サーバーの IP アドレスになります) スタート - プログラム - Microsoft SQL Server - クライアント ネットワーク ユーティリティ - エイリアス - 追加 - ネットワーク ライブラリで「tcp/ip」を選択 - サーバー エイリアスで SQL サーバー名を入力 - 接続パラメーター - サーバー名に SQL サーバーの IP アドレスを入力 - SQL ポートを変更した場合は、「ポートを動的に決定する」のチェックを外し、対応するポート番号を入力します。2. 正式な構成 1. 公開サーバーを構成する Enterprise Manager を開き、公開サーバー (B、C、D) で次の手順を実行します。 (1) [ツール]プルダウンメニューの[レプリケーション]サブメニューから[パブリッシング、サブスクリプション、ディストリビューションの構成]を選択します。パブリッシングとディストリビューションの構成ウィザードが表示されます(2) [次へ] 配布サーバーを選択します。発行サーバー自体を配布サーバーとして使用するか、他のSQLサーバーを使用するかを選択できます(自分で選択) (3) [次へ] スナップショットフォルダをデフォルトの\\servername\Pubを使用するように設定します (4) [次へ] カスタム構成 次のオプションを選択できます: はい、ディストリビューション データベースのプロパティを設定します 公開サーバーを有効にするか、公開設定を設定します いいえ、次のデフォルト設定を使用します (推奨) (5) [次へ] 配布データベース名と場所をデフォルト値に設定する(6) [次へ] 公開サーバーを有効にし、公開するサーバーを選択します(7) [次へ] 公開するデータベースと公開タイプを選択します(8) [次へ] サブスクリプションサーバーの登録を選択 (9) [次へ] 設定を完了します。 2. サーバーB、C、Dにパブリケーションを作成します。 (1) [ツール]メニューの[レプリケーション]サブメニューから[パブリケーションの作成と管理]コマンドを選択します。 (2) パブリケーションを作成するデータベースを選択し、[パブリケーションの作成]をクリックします。 (3)[パブリケーションの作成ウィザード]のプロンプトダイアログボックスで[次へ]をクリックすると、ダイアログボックスがポップアップ表示されます。ダイアログボックスの内容は、3 種類のコピーです。ここでは、デフォルトのスナップショットリリースである最初のものを選択します(他の 2 つについてはヘルプを確認してください)。 (4)[次へ]をクリックすると、パブリケーションをサブスクライブできるデータベースサーバーの種類を指定するように求められます。 SQLSERVER では、ACLE や ACCESS などの異なるデータベース間でのデータ複製が可能です。 しかし、ここでは「SQL」を実行することを選択します SERVER 2000"データベースサーバー (5) [次へ]をクリックすると、記事を定義する、つまり公開するテーブルを選択するためのダイアログボックスがポップアップ表示されます。注意: トランザクション パブリッシングを選択した場合、この手順では主キーを持つテーブルのみを選択できます。(6) パブリケーション名と説明を選択します。(7) パブリケーション プロパティ ウィザードをカスタマイズして、次のオプションを提供します。 はい、データ フィルタリングをカスタマイズし、匿名サブスクリプションやその他のカスタム プロパティを有効にします。いいえ、指定された方法に従ってパブリケーションを作成します (カスタム メソッドが推奨されます) (8)[次のステップ] リリースをフィルタリングする方法を選択します(9)[次へ] 匿名サブスクリプションを許可するかどうかを選択できます。1) 署名付きサブスクリプションを選択した場合は、パブリッシャーにサブスクライバー メソッドを追加する必要があります。 [ツール]->[レプリケーション]->[パブリケーション、サブスクリプション サーバー、およびディストリビューションのプロパティを構成する]->[サブスクリプション サーバー] 追加します。そうしないと、サブスクリプション サーバーでサブスクリプションを要求するときにプロンプトが表示されます: パブリケーションの変更では匿名サブスクリプションは許可されません。匿名サブスクリプションが引き続き必要な場合は、次のソリューションを使用します。[Enterprise Manager]->[レプリケーション]->[パブリケーション コンテンツ]->[プロパティ]->[サブスクリプション オプション] 匿名サブスクリプション要求を許可するを選択します 2) 匿名サブスクリプションを選択した場合、サブスクリプションサーバーを構成するときに上記のプロンプトは表示されません (10) [次へ] スナップショットエージェントのスケジュールを設定する(11)[次へ] 設定が完了すると、出版物を作成するためのデータベースは、データsrv1.ライブラリ名..著者とid、name、phone、フィールドを持つ共有データベースになります。 srv2. library name..author には、id、name、telphone、adress のフィールドがあります。 必要とする: srv1.library name..author がレコードを追加すると、srv1.library name..author の phone フィールドが更新され、srv1.library name..author の対応する telphone フィールドが更新されます。--*/ --一般的な処理手順--1. srv1 で srv2 を操作して同期を実現できるように、srv1 に接続サーバーを作成します。exec sp_addlinkedserver'srv2','','SQLOLEDB','srv2's sql インスタンス名または IP' exec sp_addlinkedsrvlogin'srv2'、'false'、null、'ユーザー名'、'パスワード' 行く --2. 両方のコンピュータ srv1 と srv2 で、msdtc (分散トランザクション処理サービス) を起動し、自動的に開始するように設定します。マイコンピュータ - コントロールパネル - 管理ツール - サービス - Distributed Transaction Coordinator を右クリック - プロパティ - 開始 - スタートアップの種類を自動開始に設定 --次に、上記の同期ストレージ プロシージャを定期的に呼び出すジョブを作成します。Enterprise Manager -- 管理 -- SQL サーバー エージェント - ジョブを右クリック - 新しいジョブを作成 - 「一般」項目にジョブ名を入力 - 「ステップ」項目 - 作成 - 「ステップ名」にステップ名を入力 - 「タイプ」で「Transact-SQL」を選択 スクリプト (TSQL)" --「データベース」でコマンドを実行するデータベースを選択します --「コマンド」で実行するステートメントを入力します: p_process を実行する --確認--「スケジュール」項目--新しいスケジュール--「名前」にスケジュール名を入力--「スケジュールタイプ」でジョブ実行スケジュールを選択--「定期」を選択した場合 -- 「変更」をクリックしてスケジュールを設定し、SQL エージェント サービスを起動し、自動的に開始するように設定します。そうしないと、ジョブが実行されません。設定方法: マイ コンピューター - コントロール パネル - 管理ツール - サービス - SQLSERVERAGENT を右クリック - プロパティ - スタートアップの種類 - 「自動スタートアップ」を選択 - OK。 --3. 同期を実装する方法 2: スケジュールされた同期 -- 次の同期ストレージ プロシージャを作成します。create proc in srv1 p_プロセス として -- 変更されたデータを更新します。 update bset name=i.name,telphone=i.telphone srv2.ライブラリ名.dbo.author から b、著者 i ここで、b.id=i.idand (b.name <> i.名前またはb.電話番号 <> i.電話) --新しく追加されたデータを挿入します insert srv2.library name.dbo.author(id,name,telphone) 著者からID、名前、電話番号を選択 私 存在しない場合( srv2.library name.dbo.authorwhere id=i.id から * を選択します) --削除されたデータを削除する(必要な場合) 削除b srv2.ライブラリ名.dbo.author から b 存在しない場合( 著者IDがb.idの場合、*を選択します。 行く 要約する 上記は、編集者が紹介したMysql Sqlステートメントコメントの完全なリストです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: vue backtop コンポーネントを実装するための完全なコード
>>: Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明
mysql maxとwhereの間の実行の問題SQLを実行します: テーブル「grades」を作成し...
目次データ列を分離するプレフィックスインデックスとインデックスの選択性データ列を分離するMySQL ...
補足<br />HTML について何も知らず、HTML の始め方がまだわからない場合は、...
目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...
目次バイナリ検索木 (BST) とは何ですか?バイナリツリーの基本的な走査(インオーダー、ポストオー...
最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...
NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...
この記事では、参考までに、簡単なタイマー機能を実装するためのvue.jsの具体的なコードを紹介します...
この記事の例では、画像拡大鏡効果を実現するためのVue3の具体的なコードを参考までに共有しています。...
JavaScript 入門JavaScript は軽量なインタープリタ型の Web 開発言語です。言...
目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...
本文に入る前に、オーバーフローとフレックスレイアウトの使い方をいくつか紹介します。 overflow...
目次1. setState() の説明1.1 データの更新1.2 推奨構文1.3 2番目のパラメータ...
目次1. ブラウザのサポート2.エクスポートモジュールのエクスポート3. モジュールをインポートする...
目次1. 指令とは何ですか? Vue でよく使われる組み込みの v ディレクティブv-if と v-...