金蝶k3恢复账套时,提示“逻辑文件SCM102SP2_Data不是数据库的一部分……”截图如下!

金蝶k3恢复账套时,提示“逻辑文件SCM102SP2_Data不是数据库的一部分……”截图如下!,第1张

--还原

--1用此语句得到备份文件的逻辑文件名:

RESTORE FILELISTONLY FROM DISK = N'd:\tempdb\olddbbak' --备份文件存放路径

--看LogicalName,一般会有两个文件,如:

--olddb --主逻辑文件名称

--olddb_log --日志逻辑文件名称

--2用以下语句还原数据库

RESTORE DATABASE new_db

FROM DISK = 'd:\tempdb\olddbbak'

WITH MOVE 'olddb' TO 'd:\tempdb\newdbmdf',

MOVE 'olddb_log' TO 'd:\tempdb\newdb_logldf'

/--对以上代码补充说明:

RESTORE DATABASE 还原后数据库的名称

FROM DISK = '备份文件的路径\备份数据库名称bak'

WITH MOVE '主逻辑文件名称' TO '还原后的路径\还原后数据文件名称mdf',

MOVE '日志逻辑文件名称' TO '还原后的路径\还原后日志文件名称_logldf'

/

USE pubs

在没有再次使用USE语句来改变当前数据库以前,后面的每一行 *** 作语句都将针对pubs数据库执行。使用系统存储过程sp_helpdb可以查看当前服务器上所有数据库的信息,如果指定了数据库的名字则返回指定数据库的信息。

使用系统存储过程sp_databases可以查看当前服务器上所有可以使用的数据库。

使用系统存储过程sp_helpfile可以查看当前数据库上所有文件(包括数据文件和日志文件)的信息。如果指定了文件的名字,则返回该文件的信息。

使用系统存储过程sp_helpfilegroup可以查看当前数据库上所有文件组,包括Primary文件组和User_defined文件组的信息。如果指定了文件组的名字,则返回该文件组的信息。

可以使用企业管理器来查看更详细的有关数据库的信息,方法是:

(1) 选中要查看的数据库。

(2) 从 *** 作菜单或快捷菜单中选择属性命令,d出如图34所示的对话框。从中可以查看或者修改数据文件、日志文件、文件组及使用权限等属性。

图34 数据库的属性查看

34 管理数据库

创建好数据库,也许使用一段时间之后,发现此数据库的文件容量不敷使用、此数据库已经有一段时间不用了等相关事情发生时,就必须要针对数据库来进行管理。

341 修改数据库大小

SQL Server 2000的数据文件可以自动扩充长度,所以数据库的大小也会自动增加。但是如果设置了最大文件长度,则数据库的扩充依然是有必要进行的 *** 作。修改数据库的大小实质上是修改数据文件和日志文件的长度,或者增加/删除 *** 作系统文件。这种 *** 作可以通过下面的语法来实现:

ALTER DATABASE database

{ ADD FILE <filespec> [,n] [TO FILEGROUP filegroup_name]

| ADD LOG FILE <filespec> [,n]

| REMOVE FILE logical_file_name

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILE <filespec>

| MODIFY FILEGROUP filegroup_name filegroup_property

}

<filespec> ::=

(NAME = logical_file_name

[, FILENAME = 'os_file_name' ]

[, SIZE = size]

[, MAXSIZE = { max_size | UNLIMITED } ]

[, FILEGROWTH = growth_increment] )

下面的例子在Company数据库的默认文件组Primary文件组里,增加了一个数据文件。

ALTER DATABASE Company

ADD FILE

(

NAME = Test1dat2,

FILENAME = 'e:\program files\Microsoft sql server\mssql\data\t1dat2ndf',

SIZE = 5MB,

MAXSIZE = 100MB,

FILEGROWTH = 5MB

)

GO

下面的例子在Company数据库的ComGroup1文件组里增加了两个数据文件,并将该文件组设置为默认文件组。

ALTER DATABASE Company

ADD FILE

( NAME = test1dat3,

FILENAME ='e:\program files\Microsoft sql server\mssql\data\t1dat3ndf',

SIZE = 5MB,

MAXSIZE = 100MB,

FILEGROWTH = 5MB),

( NAME = test1dat4,

FILENAME = 'e:\program files\Microsoft sql server\mssql\data\t1dat4ndf',

SIZE = 5MB,

MAXSIZE = 100MB,

FILEGROWTH = 5MB)

TO FILEGROUP ComGroup1

ALTER DATABASE Company

MODIFY FILEGROUP ComGroup1 DEFAULT

GO

下面的例子将Company数据库中test1dat3数据文件的长度改变为20MB。

ALTER DATABASE Company

MODIFY FILE

(NAME = test1dat3,

SIZE = 20MB)

GO

同样的 *** 作可以在企业管理器中进行,方法如下。

(1) 选中要查看的数据库。

(2) 从主菜单或快捷菜单中选择属性命令,d出如图34 所示对话框。

(3) 在数据文件选项卡中增删数据文件或对其属性进行修改。

(4) 在事务日志选项卡上增删日志文件或对其属性进行修改。

342 收缩数据库

SQL Server 2000数据库在长时间使用后数据文件和日志文件会非常庞大,同时删除了大量的数据后,数据文件的大小并没有自动变小。SQL Server 2000提供了手段来缩小过于庞大的数据库,以回收没有使用的数据页。可以用手动的方法单独缩小某一个数据文件,也可以缩小整个文件组的长度。还可以设置数据库在达到一定大小之前自动执行缩小 *** 作。

使用企业管理器完成缩小数据库的方法如下。

(1) 从指定服务器上展开数据库节点,选中要执行缩小 *** 作的数据库。

(2) 从快捷菜单中选择所有任务|收缩数据库命令,d出如图35所示的对话框。

图35 缩小数据库

选择执行数据库缩小 *** 作的方式:

l 收缩后文件中的最大可用空间微调框 在进行过数据库收缩后,文件中还可以利用的空间。

l 在收缩前将页移到文件起始位置复选框 把含有数据的数据页都移动到文件的开头。

l 收缩文件选项组 为了进行更精确的文件大小控制,针对每个单独的数据库文件进行收缩,具体方法是:单击文件按钮,d出如图36所示的对话框。

图36 针对文件进行收缩

可以在这个对话框中选择针对文件执行收缩 *** 作的不同方式,也可以设置执行收缩 *** 作的时间,把执行数据库收缩的时间安排在数据库存取不那么频繁的时段。

343 备份数据库

数据对于用户来说是非常宝贵的资产。数据是存放在计算机上的,但是即使是最可靠的硬件和软件,也会出现系统故障或产品故障。所以,应该在意外发生之前做好充分的准备工作,以便在意外发生之后有相应的措施能快速地恢复数据库的运行,并使丢失的数据量减少到最小。

通过企业管理器来备份数据库的 *** 作如下:

(1) 选中指定的数据库,选择工具|备份数据库命令,d出如图37所示的对话框。

图37 进行数据库备份

(2) 在该对话框可以更换需要备份的数据库,输入备份的名字和对备份的描述,选择备份的类型。

(3) 单击添加按钮选择要备份的设备,如图38所示。

图38 选择备份设备

在这个对话框中可以创建新的备份设备。用户可以一次选择多个设备,将数据库备份到多个设备上。也可以将数据库备份到指定的文件。

(4) 在图37所示的对话框的重写选项组里,选择在设备上进行 *** 作的方式,可以选择追加到媒体单选按钮,将新的备份添加到备份设备中以前备份的后面(不影响原来的备份);也可以选择重写现有媒体单选按钮,用新的备份覆盖原来的备份。

(5) 选中调度复选框,用户可以拟订自动进行备份 *** 作的时间,单击右边的按钮用户可以自主设计自动进行备份 *** 作的时间,如图39所示。完成设置后单击确定按钮,回到数据库备份界面。

图39 设置自动备份

(6) 单击确定按钮,完成备份 *** 作。

344 恢复数据库

使用SQL Server 2000可以很方便地实现数据库的恢复,步骤如下。

(1) 选中指定的数据库,选择工具|还原数据库命令,d出对话框如图310所示的对话框。

图310 还原数据库

(2) 可以选择要进行还原的数据库。在参数选项组中,用户可以选择利用哪个数据库备份来执行数据库的恢复 *** 作。如果是利用事务日志来进行恢复,还可以选择恢复数据库到某一指定时刻的状态。如果是从设备(文件)恢复数据库,可以在还原选项中选择从设备单选按钮,如图311所示。

图311 从设备还原数据库

单击选择设备按钮,如图312所示。单击添加按钮可以选择还原的文件名称。完成后单击确定按钮。

图312 选择设备

(3) 单击确定按钮完成数据库的恢复。

给你一些我常用的脚本!至于方案,我觉得完全在于积累经验!

--前10名其他等待类型

SELECT TOP 10

from sysdm_os_wait_stats

ORDER BY wait_time_ms DESC

SELECT FROM sysdm_os_wait_stats WHERE wait_type like 'PAGELATCH%'

OR wait_type like 'LAZYWRITER_SLEEP%'

--CPU的压力

SELECT scheduler_id, current_tasks_count, runnable_tasks_count

FROM sysdm_os_schedulers

WHERE scheduler_id < 255

--表现最差的前10名使用查询

SELECT TOP 10 ProcedureName = ttext,

ExecutionCount = sexecution_count,

AvgExecutionTime = isnull ( stotal_elapsed_time / sexecution_count, 0 ),

AvgWorkerTime = stotal_worker_time / sexecution_count,

TotalWorkerTime = stotal_worker_time,

MaxLogicalReads = smax_logical_reads,

MaxPhysicalReads = smax_physical_reads,

MaxLogicalWrites = smax_logical_writes,

CreationDateTime = screation_time,

CallsPerSecond = isnull ( sexecution_count / datediff ( second , screation_time, getdate ()), 0 )

FROM sysdm_exec_query_stats s

CROSS APPLY sysdm_exec_sql_text( ssql_handle ) t ORDER BY

smax_physical_reads DESC

SELECT SUM(signal_wait_time_ms) AS total_signal_wait_time_ms总信号等待时间 ,

SUM(wait_time_ms - signal_wait_time_ms) AS resource_wait_time_ms资源的等待时间,

SUM(signal_wait_time_ms) 10 / SUM (wait_time_ms) 100 AS [signal_wait_percent信号等待%],

SUM(wait_time_ms - signal_wait_time_ms) 10 / SUM (wait_time_ms) 100 AS [resource_wait_percent资源等待%]

FROM sysdm_os_wait_stats

--一个信号等待时间过多对资源的等待时间那么你的CPU是目前的一个瓶颈。

--查看进程所执行的SQL语句

if (select COUNT() from masterdbosysprocesses) > 500

begin

select text,CROSS APPLY mastersysdm_exec_sql_text(asql_handle) from mastersyssysprocesses a

end

select text,a from mastersyssysprocesses a

CROSS APPLY mastersysdm_exec_sql_text(asql_handle)

where aspid = '51'

dbcc inputbuffer(53)

with tb

as

(

select blocking_session_id,

session_id,db_name(database_id) as dbname,text from mastersysdm_exec_requests a

CROSS APPLY mastersysdm_exec_sql_text(asql_handle)

),

tb1 as

(

select a,login_time,program_name,client_interface_name,login_name,cpu_time,memory_usage8 as 'memory_usage(KB)',

total_scheduled_time,reads,writes,logical_reads

from tb a inner join mastersysdm_exec_sessions b

on asession_id=bsession_id

)

select a,connect_time,client_tcp_port,client_net_address from tb1 a inner join mastersysdm_exec_connections b on asession_id=bsession_id

--当前进程数

select from masterdbosysprocesses

order by cpu desc

--查看当前活动的进程数

sp_who active

--查询是否由于连接没有释放引起CPU过高

select from masterdbosysprocesses

where spid> 50

and waittype = 0x0000

and waittime = 0

and status = 'sleeping '

and last_batch < dateadd(minute, -10, getdate())

and login_time < dateadd(minute, -10, getdate())

--强行释放空连接

select 'kill ' + rtrim(spid) from masterdbosysprocesses

where spid> 50

and waittype = 0x0000

and waittime = 0

and status = 'sleeping '

and last_batch < dateadd(minute, -60, getdate())

and login_time < dateadd(minute, -60, getdate())

--查看当前占用 cpu 资源最高的会话和其中执行的语句(及时CPU)

select spid,cmd,cpu,physical_io,memusage,

(select top 1 [text] from ::fn_get_sql(sql_handle)) sql_text

from mastersysprocesses order by cpu desc,physical_io desc

--查看缓存中重用次数少,占用内存大的查询语句(当前缓存中未释放的)--全局

SELECT TOP 100 usecounts, objtype, psize_in_bytes,[sql][text]

FROM sysdm_exec_cached_plans p OUTER APPLY sysdm_exec_sql_text (pplan_handle) sql

ORDER BY usecounts,psize_in_bytes desc

SELECT top 25 qttext,qsplan_generation_num,qsexecution_count,dbid,objectid

FROM sysdm_exec_query_stats qs

CROSS APPLY sysdm_exec_sql_text(sql_handle) as qt

WHERE plan_generation_num >1

ORDER BY qsplan_generation_num

SELECT top 50 qttext AS SQL_text ,SUM(qstotal_worker_time) AS total_cpu_time,

SUM(qsexecution_count) AS total_execution_count,

SUM(qstotal_worker_time)/SUM(qsexecution_count) AS avg_cpu_time,

COUNT() AS number_of_statements

FROM sysdm_exec_query_stats qs

CROSS APPLY sysdm_exec_sql_text(qssql_handle) as qt

GROUP BY qttext

ORDER BY total_cpu_time DESC --统计总的CPU时间

--ORDER BY avg_cpu_time DESC --统计平均单次查询CPU时间

-- 计算可运行状态下的工作进程数量

SELECT COUNT() as workers_waiting_for_cpu,sscheduler_id

FROM sysdm_os_workers AS o

INNER JOIN sysdm_os_schedulers AS s

ON oscheduler_address=sscheduler_address

AND sscheduler_id<255

WHERE ostate='RUNNABLE'

GROUP BY sscheduler_id

--表空间大小查询

create table #tb(表名 sysname,记录数 int,保留空间 varchar(100),使用空间 varchar(100),索引使用空间 varchar(100),未用空间 varchar(100))

insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused '''''

select from #tb

go

SELECT

表名,

记录数,

cast(ltrim(rtrim(replace(保留空间,'KB',''))) as int)/1024 保留空间MB,

cast(ltrim(rtrim(replace(使用空间,'KB',''))) as int)/1024 使用空间MB,

cast(ltrim(rtrim(replace(使用空间,'KB',''))) as int)/1024/102400 使用空间GB,

cast(ltrim(rtrim(replace(索引使用空间,'KB',''))) as int)/1024 索引使用空间MB,

cast(ltrim(rtrim(replace(未用空间,'KB',''))) as int)/1024 未用空间MB

FROM #tb

WHERE cast(ltrim(rtrim(replace(使用空间,'KB',''))) as int)/1024 > 0

--order by 记录数 desc

ORDER BY 使用空间MB DESC

DROP TABLE #tb

--查询是否由于连接没有释放引起CPU过高

select from masterdbosysprocesses

where spid> 50

and waittype = 0x0000

and waittime = 0

and status = 'sleeping '

and last_batch < dateadd(minute, -10, getdate())

and login_time < dateadd(minute, -10, getdate())

--强行释放空连接

select 'kill ' + rtrim(spid) from masterdbosysprocesses

where spid> 50

and waittype = 0x0000

and waittime = 0

and status = 'sleeping '

and last_batch < dateadd(minute, -60, getdate())

and login_time < dateadd(minute, -60, getdate())

----查看当前占用 cpu 资源最高的会话和其中执行的语句(及时CPU)

select spid,cmd,cpu,physical_io,memusage,

(select top 1 [text] from ::fn_get_sql(sql_handle)) sql_text

from mastersysprocesses order by cpu desc,physical_io desc

----查看缓存中重用次数少,占用内存大的查询语句(当前缓存中未释放的)--全局

SELECT TOP 100 usecounts, objtype, psize_in_bytes,[sql][text]

FROM sysdm_exec_cached_plans p OUTER APPLY sysdm_exec_sql_text (pplan_handle) sql

ORDER BY usecounts,psize_in_bytes desc

SELECT top 25 qttext,qsplan_generation_num,qsexecution_count,dbid,objectid

FROM sysdm_exec_query_stats qs

CROSS APPLY sysdm_exec_sql_text(sql_handle) as qt

WHERE plan_generation_num >1

ORDER BY qsplan_generation_num

SELECT top 50 qttext AS SQL_text ,SUM(qstotal_worker_time) AS total_cpu_time,

SUM(qsexecution_count) AS total_execution_count,

SUM(qstotal_worker_time)/SUM(qsexecution_count) AS avg_cpu_time,

COUNT() AS number_of_statements

FROM sysdm_exec_query_stats qs

CROSS APPLY sysdm_exec_sql_text(qssql_handle) as qt

GROUP BY qttext

ORDER BY total_cpu_time DESC --统计总的CPU时间

--ORDER BY avg_cpu_time DESC --统计平均单次查询CPU时间

-- 计算可运行状态下的工作进程数量

SELECT COUNT() as workers_waiting_for_cpu,sscheduler_id

FROM sysdm_os_workers AS o

INNER JOIN sysdm_os_schedulers AS s

ON oscheduler_address=sscheduler_address

AND sscheduler_id<255

WHERE ostate='RUNNABLE'

GROUP BY sscheduler_id

SELECT creation_time N'语句编译时间'

,last_execution_time N'上次执行时间'

,total_physical_reads N'物理读取总次数'

,total_logical_reads/execution_count N'每次逻辑读次数'

,total_logical_reads N'逻辑读取总次数'

,total_logical_writes N'逻辑写入总次数'

, execution_count N'执行次数'

, total_worker_time/1000 N'所用的CPU总时间ms'

, total_elapsed_time/1000 N'总花费时间ms'

, (total_elapsed_time / execution_count)/1000 N'平均时间ms'

,SUBSTRING(sttext, (qsstatement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(sttext)

ELSE qsstatement_end_offset END

- qsstatement_start_offset)/2) + 1) N'执行语句'

FROM sysdm_exec_query_stats AS qs

CROSS APPLY sysdm_exec_sql_text(qssql_handle) st

where SUBSTRING(sttext, (qsstatement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(sttext)

ELSE qsstatement_end_offset END

- qsstatement_start_offset)/2) + 1) not like '%fetch%'

ORDER BY total_elapsed_time / execution_count DESC;

ER/Studio生成数据库设计文档

用ER/Studio生成数据库设计文档之前,至少应该完成数据库的逻辑模型(Logical Model),如果有需要,再进一步可以生成物理模型(Physical Model)。之后,就可以通过导出报告(Generate Reports)来生成数据库设计文档了,步骤如下:

1、导出报告(Generate Reports)

2、设置导出报告的格式、路径、名称等

在d出的ER/Studio Report Wizard对话框中,Page 1 of 4,设置设置导出报告的格式、路径、名称。

首先选择导出的报告类型,即图中步骤1。由于通常数据库设计文档需要查看方便、最好可编辑,所以选择后面的RTF格式。而选择HTML report会生成htm格式的文件,此处就不细讲了。

接着分别设置文件生成路径、生成文件的名称,分别为图中2和3。

以上就是关于金蝶k3恢复账套时,提示“逻辑文件SCM102SP2_Data不是数据库的一部分……”截图如下!全部的内容,包括:金蝶k3恢复账套时,提示“逻辑文件SCM102SP2_Data不是数据库的一部分……”截图如下!、怎么查看数据库、谁总结下sqlserver数据库优化知识的详解和具体 *** 作最优方案!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10096131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存