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
分享到:
相关推荐
4. 使用 SQLServer2008Client 进行连接。输入相应地址和用户名密码。 5. 查看相关配置内容: 6. 将相关数据库导入,进行连接 远程连接字符串 服务器=ip 地址;Initial Catalog=数据库名;User ID=sa;Password=密码 ...
### SQLServer连接ACCESS数据库的实现:深度解析与实践指南 #### 异构数据库连接概览 在企业级应用中,数据库通常不会局限于单一类型或品牌,而是存在多种数据库平台共存的情况,这被称为异构数据库环境。为了实现...
在 Windows Server 2008 64 位操作系统中,使用 SQL Server 建立 Linked Server 连接 Oracle 数据库是一种常见的需求。然而,在 64 位操作系统中,建立 Linked Server 连接 Oracle 并不是一件容易的事情。本文将详细...
### 数据库分布式查询Sqlserver详解 #### 一、引言 在进行软件开发的过程中,我们经常会遇到这样的场景:数据分布在不同的服务器上,而我们需要在这些不同的数据库之间进行查询、更新等操作。这种需求催生了数据库...
### SQL Server跨数据库实例取数方式详解 在SQL Server环境中,有时我们需要从不同的数据库实例中获取数据。这种需求可以通过创建链接服务器(Linked Server)来实现。本文将详细介绍如何通过SQL Server实现跨...
SQL Server 2000提供了“开放数据库连接”(ODBC)和“数据库链接”(Linked Server)两种方式来实现这一功能。ODBC是通过数据源管理器创建一个指向Oracle数据库的ODBC数据源,然后在SQL Server中使用SQL Server ODBC...
在SQL Server与Oracle互连的场景中,常见的方法包括但不限于ODBC(开放式数据库连接)、OLE DB、链接服务器(Linked Server)、异构连接服务(Heterogeneous Services)以及通过T-SQL的OPENQUERY等。 1. **ODBC ...
本文将详细介绍如何通过配置Linked Server以及使用Oracle的透明网关(Oracle Gateway for Microsoft SQL Server, 简称TG4MS)来实现SQLServer2008 R2与Oracle11g R2之间的互连。 #### 2. 环境信息 - **SQLServer ...
综上所述,本文档详细介绍了如何通过一系列具体的操作步骤来增强SQL Server数据库的安全性。这些措施涵盖了从账号管理、网络部署策略到文件存储及权限控制等多个方面,为维护数据库的安全稳定运行提供了宝贵的指导。
本问题涉及到SQL Server访问MySQL数据库时遇到的字符编码问题,导致中文显示为乱码。以下是对这个问题的详细分析和解决方法。 首先,问题的核心在于字符编码不匹配。SQL Server和MySQL可能使用了不同的字符集来处理...
不同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQL SERVER里面叫做LINKED SERVER,通过ODBC实现与其它数据库的互联。...
这些操作可以包括查询、插入、更新、删除等,它们都像操作本地SQL Server数据库一样简单,只是在数据源的路径上可能会有所不同。 使用链接服务器的好处是显而易见的。它允许数据库管理员利用他们已经熟练掌握的SQL ...
注意:在使用 SQL Server 访问 Oracle 数据库时,如果 Oracle 表有 NUMBER 列时会出现转化错误,可以将 NUMBER 类型转化为字符串,也可以将该列属性修改成 NUMBER(10),为 NUMBER 列设定好位数。 使用 OPENQUERY ...
在IT领域,数据库之间的互操作性是至关重要的,特别是在企业级应用中,SQL Server和Oracle数据库的集成常常被需要。本文将详细介绍如何在SQL Server上安装Oracle Provider for OLE DB驱动,以便创建与Oracle数据库的...
这篇文档“SQLServer面试题.doc”显然包含了与SQL Server相关的面试问题,可能是为了帮助求职者准备数据库管理员(DBA)、数据库开发人员或数据分析职位的面试。以下是一些可能出现在SQL Server面试中的关键知识点:...
7. **更新应用程序连接**:如果Access数据库被应用程序所使用,需要修改应用程序的连接字符串,指向新的SQL Server数据库。 8. **用户权限和安全性**:在SQL Server中设置适当的用户权限和角色,以确保数据的安全...
3. **ADO.NET链接**:利用ADO.NET对象,可以通过Visual Basic或C#编写代码来链接和操作SQL Server数据库。这种方式灵活性高,适合程序员进行定制开发。 二、SQL Server链库 SQL Server提供了丰富的集成服务,允许与...
标题中的“linked server”指的是SQL Server中的一个特性,它允许SQL Server实例与其他数据库管理系统(DBMS)进行交互,实现跨数据库查询和数据操作。通过设置链接服务器,用户可以在同一个SQL查询中访问和操作不同...
为了配置SQL Server以实现异类数据库的链接服务,管理员(DBA)需要执行一系列步骤,包括安装目标数据库的客户端驱动程序,设置链接服务器对象,配置安全性,以及测试连接和查询性能。 总的来说,MS SQL Server 7.0...