`
csstome
  • 浏览: 1521256 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Sql Server 性能分析2 –查看数据库的大小以及数据库表的大小(Linked Server)

阅读更多

Sql Server 性能分析2 –查看数据库的大小以及数据库表的大小(Linked Server)

因为业务的需求,需要用Linked Server从当前数据库获取远端数据库的 数据库大小 以及 远端数据库的 表大小

关于Linked Server 连接,请看我的另一篇文档:

http://blog.csdn.net/zwxrain/archive/2007/01/18/1486304.aspx

在操作中遇到以下几个问题,并都以解决

问题一: 不可以直接对远需数据库操作 sp_spaceused 查看大小(数据库大小和表大小)

sp_spaceused 的操用方法:

查看本地表大小

sp_spaceused ‘TableName’

查看远端数据库大小

Srv_MES.InsiteProdDG.dbo.sp_spaceused ‘TableName’

说明:

Srv_MES Linked Server , InsiteProdDG Linked Server 远端的数据库名。

查看远端数据大小的错误描述:

Msg 7411, Level 16, State 1, Line 14

Server 'Srv_MES' is not configured for RPC.

解决方法:将Linked Server Rpc_Out 设成 True

问题2 解决第一个问题,我们可以正常查询远端数据库的表大小,但当然们将查询结果保存到表时却出现如下错误。

insert into @tb_size exec Srv_MES.InsiteProdDG.dbo.sp_spaceused ‘tb_name’

错误描述:

OLE DB provider "SQLNCLI" for linked server "Srv_MES" returned message "The transaction manager has disabled its support for remote/network transactions.".

Msg 7391, Level 16, State 2, Line 13

The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "Srv_MES" was unable to begin a distributed transaction.

原因:

由于开启了事务,需要分布式事务协调器的支持。打开本机的控制面板 - 管理工具 - 服务,将两台服务器上的 Distributed Transaction Coordinator (MSDTC) 服务开启,注意 MSDTC 服务的登陆名必须选择 NETWORK SERVICE 用户。然后设置高级选项,运行 dcomcnfg.exe ,进入组件服务,选择我的电脑右键属性,MSDTC - 安全配置,勾选:网络DTC访问,允许入站,允许出站,并且不要求进行验证。其他的可以根据需要选择,不是必须选项。

解决:

SQL 代码部分:

---Linked Server 获取远端数据库的大小----

Create procedure [dbo].[Proc_DBA_Database_Size]

as

Declare @l_datetime varchar(20)

set @l_datetime = convert(varchar(20),getdate(),120)

insert into TB_DBA_Database_Size

select -- fileid,

@l_datetime as Date_Time,

'InsiteProdDG' [Database Name] ,

cast(sum(size)*8/1024. as decimal(10,2)) [DB Size],

'MB' Size_Type

-- name logic filename,

-- filename physics filename

from Srv_MES.InsiteProdDG.dbo.sysfiles

---Linked Server 获取远端数据库表的大小----

Create procedure [dbo].[Proc_DBA_MES_Table_Size]

as

Declare @tb_name varchar(50)

Declare @tb_list table

(

tb_name varchar(50)

)

declare @tb_size table

(

name varchar(50),

rows varchar(50),

Reserved varchar(50),

Data varchar(50),

Index_Size varchar(50),

Unused varchar(50)

)

declare cur_tb_list cursor for

select name

from dbo.sysobjects

where objectproperty(id, N'istable') = 1

and name not like N'#%%'

order by name

open cur_tb_list

fetch Next from cur_tb_list

into @tb_name

while @@fetch_status=0

begin

if exists (select * from dbo.sysobjects

where id = object_id(@tb_name)

and objectproperty(id, N'isusertable')=1)

insert into @tb_size exec Srv_MES.InsiteProdDG.dbo.sp_spaceused @tb_name

fetch Next from cur_tb_list

into @tb_name

end

insert into TB_DBA_Database_Table_Size

select convert(varchar(20),getdate(),120) as date_time,*

from @tb_size

close cur_tb_list

deallocate cur_tb_list

分享到:
评论

相关推荐

    SQL Server 2008 R2开启数据库的远程连接及客户端配置

    4. 使用 SQLServer2008Client 进行连接。输入相应地址和用户名密码。 5. 查看相关配置内容: 6. 将相关数据库导入,进行连接 远程连接字符串 服务器=ip 地址;Initial Catalog=数据库名;User ID=sa;Password=密码 ...

    SQLServer连接ACCESS数据库的实现

    ### SQLServer连接ACCESS数据库的实现:深度解析与实践指南 #### 异构数据库连接概览 在企业级应用中,数据库通常不会局限于单一类型或品牌,而是存在多种数据库平台共存的情况,这被称为异构数据库环境。为了实现...

    Windows Server 2008 内SQLServer建立Linked Server连接Oracle

    在 Windows Server 2008 64 位操作系统中,使用 SQL Server 建立 Linked Server 连接 Oracle 数据库是一种常见的需求。然而,在 64 位操作系统中,建立 Linked Server 连接 Oracle 并不是一件容易的事情。本文将详细...

    数据库分布式查询sqlserver

    ### 数据库分布式查询Sqlserver详解 #### 一、引言 在进行软件开发的过程中,我们经常会遇到这样的场景:数据分布在不同的服务器上,而我们需要在这些不同的数据库之间进行查询、更新等操作。这种需求催生了数据库...

    SQLServer跨数据库实例取数方式

    ### SQL Server跨数据库实例取数方式详解 在SQL Server环境中,有时我们需要从不同的数据库实例中获取数据。这种需求可以通过创建链接服务器(Linked Server)来实现。本文将详细介绍如何通过SQL Server实现跨...

    sql server 2000访问oracle数据库

    SQL Server 2000提供了“开放数据库连接”(ODBC)和“数据库链接”(Linked Server)两种方式来实现这一功能。ODBC是通过数据源管理器创建一个指向Oracle数据库的ODBC数据源,然后在SQL Server中使用SQL Server ODBC...

    sqlserver與oracle互連的幾種方式

    在SQL Server与Oracle互连的场景中,常见的方法包括但不限于ODBC(开放式数据库连接)、OLE DB、链接服务器(Linked Server)、异构连接服务(Heterogeneous Services)以及通过T-SQL的OPENQUERY等。 1. **ODBC ...

    SQLServer2008R2与Oracle11gR2互连

    本文将详细介绍如何通过配置Linked Server以及使用Oracle的透明网关(Oracle Gateway for Microsoft SQL Server, 简称TG4MS)来实现SQLServer2008 R2与Oracle11g R2之间的互连。 #### 2. 环境信息 - **SQLServer ...

    SQL Server 数据库安全配置手册

    综上所述,本文档详细介绍了如何通过一系列具体的操作步骤来增强SQL Server数据库的安全性。这些措施涵盖了从账号管理、网络部署策略到文件存储及权限控制等多个方面,为维护数据库的安全稳定运行提供了宝贵的指导。

    SQLSERVER访问MYSQL表中文显示成乱码.pdf

    本问题涉及到SQL Server访问MySQL数据库时遇到的字符编码问题,导致中文显示为乱码。以下是对这个问题的详细分析和解决方法。 首先,问题的核心在于字符编码不匹配。SQL Server和MySQL可能使用了不同的字符集来处理...

    SQL Server连接VFP数据库的实现方法

    不同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQL SERVER里面叫做LINKED SERVER,通过ODBC实现与其它数据库的互联。...

    SQL SERVER管理异构数据库.pdf

    这些操作可以包括查询、插入、更新、删除等,它们都像操作本地SQL Server数据库一样简单,只是在数据源的路径上可能会有所不同。 使用链接服务器的好处是显而易见的。它允许数据库管理员利用他们已经熟练掌握的SQL ...

    透过SQL Server 2008访问Oracle 10g的配置方法

    注意:在使用 SQL Server 访问 Oracle 数据库时,如果 Oracle 表有 NUMBER 列时会出现转化错误,可以将 NUMBER 类型转化为字符串,也可以将该列属性修改成 NUMBER(10),为 NUMBER 列设定好位数。 使用 OPENQUERY ...

    SQL SERVER 安装ORACLE provider for OLE DB 的连接服务驱动

    在IT领域,数据库之间的互操作性是至关重要的,特别是在企业级应用中,SQL Server和Oracle数据库的集成常常被需要。本文将详细介绍如何在SQL Server上安装Oracle Provider for OLE DB驱动,以便创建与Oracle数据库的...

    SQlServer面试题.doc

    这篇文档“SQLServer面试题.doc”显然包含了与SQL Server相关的面试问题,可能是为了帮助求职者准备数据库管理员(DBA)、数据库开发人员或数据分析职位的面试。以下是一些可能出现在SQL Server面试中的关键知识点:...

    将access数据库移植到sql server 7.0.rar

    7. **更新应用程序连接**:如果Access数据库被应用程序所使用,需要修改应用程序的连接字符串,指向新的SQL Server数据库。 8. **用户权限和安全性**:在SQL Server中设置适当的用户权限和角色,以确保数据的安全...

    三种链库方式,分别有ACCESS和SQL数据库的链接方法(包含代码)

    3. **ADO.NET链接**:利用ADO.NET对象,可以通过Visual Basic或C#编写代码来链接和操作SQL Server数据库。这种方式灵活性高,适合程序员进行定制开发。 二、SQL Server链库 SQL Server提供了丰富的集成服务,允许与...

    linked server

    标题中的“linked server”指的是SQL Server中的一个特性,它允许SQL Server实例与其他数据库管理系统(DBMS)进行交互,实现跨数据库查询和数据操作。通过设置链接服务器,用户可以在同一个SQL查询中访问和操作不同...

    MS SQL Server 7.0的异类数据库链接技术.pdf

    为了配置SQL Server以实现异类数据库的链接服务,管理员(DBA)需要执行一系列步骤,包括安装目标数据库的客户端驱动程序,设置链接服务器对象,配置安全性,以及测试连接和查询性能。 总的来说,MS SQL Server 7.0...

Global site tag (gtag.js) - Google Analytics