搜尋
首頁資料庫mysql教程SQLServer分布式查询(2)

SQLServer分布式查询(2)

Jun 07, 2016 pm 03:27 PM
sqlserver分散式排查查詢問題

3问题排查与更多查询方式 当我们在实际编程中进行访问远程数据时 因为不同操作环境会引发各种各样的异常,如下我会提出一种常见的异常方式解决办法和关于远程数据操作更多查询方式. 3.1无法建立远程连接 其实这个问题在做分布式查询时极其常见. 而引起这个问

  问题排查与更多查询方式

  当我们在实际编程中进行访问远程数据时 因为不同操作环境会引发各种各样的异常,如下我会提出一种常见的异常方式解决办法和关于远程数据操作更多查询方式.

  无法建立远程连接

  其实这个问题在做分布式查询时极其常见. 而引起这个问题的因素过多. 我们一时无法判断真正引发这个异常地方. 只能通过逐个排查方式来进行设置:

  例如我们在建立关联关系后 进行查询时会遇到:

SQLServer分布式查询(2)

  提示是: 在进行远程连接时超时, 引起这个问题原因可能是远程服务器积极拒绝访问!

  首先要在Sql Server Configuation Manager中保证你服务已经运行 且是开机自动运行.

  再次检查SQl2005外围配置DataBaseEngine允许远程连接:

SQLServer分布式查询(2)

  设置完成后.我们还需要设置Sql Server Analysis Services分析服务也支持远程数据查询:

SQLServer分布式查询(2)

  在远程服务器上如果启用了防火墙则可能对目前SQl Server方位实例进行拦截. 所以在服务器端启用防火墙情况下要为SQl DAtaBase创建例外.防止客户端请求被拦截.

  进程被其他用户占用

  当我们在远程分布式查询中有创建动作或是类似创建一个新的数据库. 有时会提示 “该数据库无法操作 已经别其他进程占用”异常. 导致我们无法访问数据库. 或是执行我们要做的创建操作.

  遇到这种情况我们可以利用SA权限查询到Master数据库对应数据库被占用的进程 并杀掉Kill Process.查询:

<p><span>1</span><span>:  </span><span>--</span><span> [sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。</span><span><br>   </span><span>2</span><span>:  </span><span>--</span><span> 这些进程可以是客户端进程或系统进程。sysprocesses 只存储在 master 数据库中]</span><span><br></span><span>4</span><span>:  </span><span>use</span><span> Master<br>   </span><span>5</span><span>:  </span><span>go</span><span><br>   </span><span>7</span><span>:  </span><span>SELECT</span><span>*</span><span>FROM</span><span> sysprocesses ,sysdatabases </span><span>WHERE</span><span> sysprocesses.dbid</span><span>=</span><span>sysdatabases.dbid </span><span>AND</span><span> sysdatabases.Name</span><span>=</span><span>'</span><span>CustomerDB</span><span>'</span><span><br>   </span><span>9</span><span>:  </span><span>select</span><span>*</span><span>from</span><span> sysprocesses<br>  </span><span>11</span><span>:  </span><span>select</span><span>*</span><span>from</span><span> sysdatabases<br>  </span><span>13</span><span>:  </span><span>--</span><span> 杀死占用进程</span><span><br></span><span>14</span><span>:  </span><span>kill</span><span>5</span></p>

  当我们对进程占用清除时有可能访问数据库被系统进程占用. 则这时用Sa无法杀死.这时提示:

SQLServer分布式查询(2)

  “Only use Process can be Kill ”在SQl2005 只有只有用户进程才能Kill掉.

  更多的查询操作

  往往我们在实际操作中需要对数据读写有更多要求. 例如从远程连接多个服务器进行数据读取或是把本地数据提交到服务器上. 为了提高效率和性能采用分布式事务来进行批量操作等等. 如下简单介绍在分布式查询中多中数据操作:

  把远程数据导入本地:

<p><span>1</span><span>:  </span><span>--</span><span> 导入数据操作</span><span><br>   </span><span>2</span><span>:  </span><span>select</span><span>top</span><span>(</span><span>3</span><span>) </span><span>*</span><span>into</span><span> TestDB.dbo.CopyDb </span><span>from</span><span>[</span><span>192.168.10.76</span><span>]</span><span>.wl.dbo.Users<br></span></p>

  导入时使用Into方式 自动在本地创建CopyDB表完全复制远程服务器上Users表的数据结构.但是要注意在进行后 的CopyDB将不包含原表的主键和索引约束. 虽然能快构建 但是主键和索引设置都会丢失.

  本地数据导入远程:

<p><span>--</span><span> 把本地表导入远程表 [openWset方式]</span><span><br></span><span>insert</span><span>openrowset</span><span>( </span><span>'</span><span>SQLOLEDB </span><span>'</span><span>, </span><span>'</span><span>sql服务器名 </span><span>'</span><span>; </span><span>'</span><span>用户名 </span><span>'</span><span>; </span><span>'</span><span>密码 </span><span>'</span><span>,数据库名.dbo.表名)  </span><span>select</span><span>*</span><span>from</span><span> 本地表 <br></span><span>--</span><span> 把本地表导入远程表 [open Query方式]</span><span><br></span><span>insert</span><span>openquery</span><span>(ITSV, </span><span>'</span><span>SELECT * FROM 数据库.dbo.表名 </span><span>'</span><span>)  </span></p>
更新本地表数据:<br>

<p><span>1</span><span>:  </span><span>--</span><span> 把本地表导入远程表 [opendataSource方式]</span><span><br>   </span><span>2</span><span>:    </span><span>insert</span><span>opendatasource</span><span>( </span><span>'</span><span>SQLOLEDB </span><span>'</span><span>, </span><span>'</span><span>Data Source=ip/ServerName;User ID=登陆名;Password=密码 </span><span>'</span><span>).数据库.dbo.表名  <br>   </span><span>3</span><span>:   <br>   </span><span>4</span><span>:  </span><span>--</span><span> 更新本地表 [openowset方式]</span><span><br></span><span>5</span><span>:   </span><span>update</span><span> b  </span><span>set</span><span> b.列A</span><span>=</span><span>a.列A  </span><span>from</span><span>openrowset</span><span>( </span><span>'</span><span>SQLOLEDB </span><span>'</span><span>, </span><span>'</span><span>sql服务器名 </span><span>'</span><span>; </span><span>'</span><span>用户名 </span><span>'</span><span>; </span><span>'</span><span>密码 </span><span>'</span><span>,数据库名.dbo.表名)<br>   </span><span>6</span><span>:   </span><span>as</span><span> a </span><span>inner</span><span>join</span><span> 本地表 b  </span><span>on</span><span> a.column1</span><span>=</span><span>b.column1  </span></p>

  当然还有更多方式来操作分布式查询操作.各位都可以尝试.

  尾 语

  如上是我最近在项目中处理关于分布式查询涉及到方方面面. 从系统架构到分部是查询具体操作细节.基本都是一些非常基础运用.当然也参考不少资料.以及动手来验证整个过程出现问题原因所在. 篇幅有限 写的有些仓促. 难免有纰漏地方 还望各位指正.

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
解釋酸的特性(原子,一致性,隔離,耐用性)。解釋酸的特性(原子,一致性,隔離,耐用性)。Apr 16, 2025 am 12:20 AM

ACID屬性包括原子性、一致性、隔離性和持久性,是數據庫設計的基石。 1.原子性確保事務要么完全成功,要么完全失敗。 2.一致性保證數據庫在事務前後保持一致狀態。 3.隔離性確保事務之間互不干擾。 4.持久性確保事務提交後數據永久保存。

MySQL:數據庫管理系統與編程語言MySQL:數據庫管理系統與編程語言Apr 16, 2025 am 12:19 AM

MySQL既是數據庫管理系統(DBMS),也與編程語言緊密相關。 1)作為DBMS,MySQL用於存儲、組織和檢索數據,優化索引可提高查詢性能。 2)通過SQL與編程語言結合,嵌入在如Python中,使用ORM工具如SQLAlchemy可簡化操作。 3)性能優化包括索引、查詢、緩存、分庫分錶和事務管理。

mySQL:使用SQL命令管理數據mySQL:使用SQL命令管理數據Apr 16, 2025 am 12:19 AM

MySQL使用SQL命令管理數據。 1.基本命令包括SELECT、INSERT、UPDATE和DELETE。 2.高級用法涉及JOIN、子查詢和聚合函數。 3.常見錯誤有語法、邏輯和性能問題。 4.優化技巧包括使用索引、避免SELECT*和使用LIMIT。

MySQL的目的:有效存儲和管理數據MySQL的目的:有效存儲和管理數據Apr 16, 2025 am 12:16 AM

MySQL是一種高效的關係型數據庫管理系統,適用於存儲和管理數據。其優勢包括高性能查詢、靈活的事務處理和豐富的數據類型。實際應用中,MySQL常用於電商平台、社交網絡和內容管理系統,但需注意性能優化、數據安全和擴展性。

SQL和MySQL:了解關係SQL和MySQL:了解關係Apr 16, 2025 am 12:14 AM

SQL和MySQL的關係是標準語言與具體實現的關係。 1.SQL是用於管理和操作關係數據庫的標準語言,允許進行數據的增、刪、改、查。 2.MySQL是一個具體的數據庫管理系統,使用SQL作為其操作語言,並提供高效的數據存儲和管理。

說明InnoDB重做日誌和撤消日誌的作用。說明InnoDB重做日誌和撤消日誌的作用。Apr 15, 2025 am 12:16 AM

InnoDB使用redologs和undologs確保數據一致性和可靠性。 1.redologs記錄數據頁修改,確保崩潰恢復和事務持久性。 2.undologs記錄數據原始值,支持事務回滾和MVCC。

在解釋輸出(類型,鍵,行,額外)中要查找的關鍵指標是什麼?在解釋輸出(類型,鍵,行,額外)中要查找的關鍵指標是什麼?Apr 15, 2025 am 12:15 AM

EXPLAIN命令的關鍵指標包括type、key、rows和Extra。 1)type反映查詢的訪問類型,值越高效率越高,如const優於ALL。 2)key顯示使用的索引,NULL表示無索引。 3)rows預估掃描行數,影響查詢性能。 4)Extra提供額外信息,如Usingfilesort提示需要優化。

在解釋中使用臨時狀態以及如何避免它是什麼?在解釋中使用臨時狀態以及如何避免它是什麼?Apr 15, 2025 am 12:14 AM

Usingtemporary在MySQL查詢中表示需要創建臨時表,常見於使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通過優化索引和重寫查詢避免其出現,提升查詢性能。具體來說,Usingtemporary出現在EXPLAIN輸出中時,意味著MySQL需要創建臨時表來處理查詢。這通常發生在以下情況:1)使用DISTINCT或GROUPBY時進行去重或分組;2)ORDERBY包含非索引列時進行排序;3)使用複雜的子查詢或聯接操作。優化方法包括:1)為ORDERBY和GROUPB

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器