估计这个库中的某个表上有instead of delete的触发器吧,你可以在该库的"可编程"下找一下是否有触发器,如果确定不要了,把触发器删除,这样它监视的表就可成功删除,库也就可以删掉了~~
或者直接强制"分离数据库"(右键库去选),分离掉之后,库的文件还在,可以再在 *** 作系统中删除文件
很多朋友只用了Oracle的删除 但很多情况下 他会发现重新安装时 点了下一步安装界面就消失了 往往无奈下只好重装系统 其实只是你数据库没删干净 删干净就不会出现这种情况了
实现方法
开始 >设置 >控制面板 >管理工具 >服务停止所有Oracle服务
开始 >程序 >Oracle OraHome >Oracle Installation Products >Universal Installer卸装所有Oracle产品 但Universal Installer本身不能被删除
运行regedit 选择HKEY_LOCAL_MACHINESOFAREORACLE 按del键删除这个入口
运行regedit 选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 滚动
这个列表 删除所有Oracle入口
运行refedit HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication 删除所有Oracle入口
开始 >设置 >控制面板 >系统 >高级 >环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定
从桌面上 STARTUP(启动)组 程序菜单中 删除所有有关Oracle的组和图标
删除Program FilesOracle目录
重新启动计算机 重起后才能完全删除Oracle所在目录
删除与Oracle有关的文件 选择Oracle所在的缺省目录C:Oracle 删除这个入口目录及所有子目录 并从Windows 目录(一般为C:WINNT)下删除以下文件ORACLE INI oradim INI oradim INI oraodbc ini等等
WIN INI文件中若有[ORACLE]的标记段 删除该段
如有必要 删除所有Oracle相关的ODBC的DSN
到事件查看器中 删除Oracle相关的日志
说明
如果有个别DLL文件无法删除的情况 则不用理会 重新启动 开始新的安装 安装时 选择一个新的目录 则 安装完毕并重新启动后 老的目录及文件就可以删除掉了
选择安装Oracle i数据库服务器
选中Oracle i Database 单选按钮 其他选项适用于安装客户端软件或管理软件 单击[下一步]按钮 继续安装
选择你所需要的安装类型 通常选用功能齐全的[企业版]针对安装目的的不同 选择所需要的数据库
图
如果你对安装Oracle i还不熟悉的话 建议选中[通用]单选按钮 如图 所示这种安装类型将会帮助你自动配置网络连接和创建数据库
选项说明 通用 安装通用目的的预配置数据库 通用类型适用于简单的事务处理或复杂的查询 支持大量并发用户对数据的快速访问 它既可用于事务处理环境的典型应用 也可用于决策支持系统即DSS查询 并能对历史数据进行数据扫描 事务处理 ——安装优化事务处理的预配置数据库 事务处理类型支持大量并发用户执行简单的事务处理 可以提供较高的可用性和事务处理性 提供大量用户并行访问相同数据的能力并具有高度的恢复性能 事务处理的典型应用有银行事务处理或Internet商务数据库的事务处理 数据仓库 ——安装优化数据仓库的预配置数据库 数据仓库类型适合于对主题进行复杂的查询 它支持大量数据进行快速的访问并且使用类似联机分析处理即OLAP等应用程序 数据仓库的典型应用比较广泛 包括客户定单研究 支持呼叫 销售预测 购物和采购模式以及其他战略性业务问题的历史数据库 自定义 ——创建自定义数据库 选择此项 需要安装的时间长 但可以选择需要的安装类型和组件 只有对Oracle安装非常有经验的用户或准备提供复杂的系统和产品配置信息 或需要安装Oracle 的特定组件时才需要选择自定义安装 只安装软件 ——选择此类型 只安装软件 不创建数据库 完成安装后不会启动配置助手 这可能会使以后再配置数据库时遇到一定的困难
图
在图 所示的数据库标识的对话框中 自己确定自己要创建的全局数据库名称 本例中 [全局数据库名]和SID中都输入 ORACL 单击[下一步]按钮 继续安装
选择数据库文件位置
图
为了优化数据库的性能 建议将数据库文件和软件安装在不同的磁盘上 见图
选择数据库字符集
Oracle数据库字符集的设置是安装的一个关键问题 字符集若使用不当 数据库中会出现形如 的字符 使得用户无法正确识别信息 同时也有可能造成重要信息的丢失
图
首先我们要说明 在安装数据库服务器时 应选择通用的数据库中文字符集 数据库中文字符集主要有三种 ZHS GBK US ASCII和WE ISO P 这里 我们选择字符集ZHS GBK 如图 所示
其次在后边将要讲解的客户端安装时 为了使客户端正常显示服务器的信息 在安装客户端的时候 必须使客户端的字符集和服务器端的字符集一致 因此 在后面的客户端安装步骤中 客户端的字符集也必须选择ZHS GBK
点击[安装] 开始安装 可查看安装进程 在安装过程中根据提示分别将第二和第三张安装盘放入光驱即可
创建数据库
图
在成功安装Oracle软件后 此时就要开始创建数据库 图 中所示的对话框显示了数据库创建的进程
改变默认口令
图
图
创建完SID为ORACL的数据库后 数据库配置助手将显示数据库的详细信息 包括默认的SYS和SYSTEM口令 见图 如果想修改 单击[口令管理]按钮改变默认口令后 单击[退出]按钮 完成数据库的配置 安装程序将进行其他一些工具服务的配置 如图 所示这些 *** 作都是自动进行的 此时千万不要着急 要耐心等待
图
当出现如图 所示的安装结束画面时 证明我们的数据库服务器安装已经基本大功告成了
检查安装后的情况
按照前面的步骤完成数据库服务器的安装后 如何知道数据库运转如何提供了哪些服务所以我们此时就要进行必要的检查工作来确认一下
在[程序]菜单中检查
在数据库服务器安装结束后 检查一下[程序]菜单中的项目 选择[开始]|[所有程序] 共有两项
Oracle OraHome Oracle工具
Oracle Instaalation Products Oracle安装产品
在 服务 中检查
图
选择[开始]|[设置]|[控制面板]命令 双击[管理工具图标] 选择[服务]选项 打开如图 所示的画面 该图列出了服务器安装后 Oracle所有需要启动的服务 这时应该是
检查连接数据库
完成前两步后 说明数据库和监听器服务都已经正常工作了 下一步 我们 我们试一下在服务器端使用SQLPlus检查连接数据库的情况
图
运行SQLPlus后 如图 所示输入用户名和口令 连接不成功和成功的情况如图 所示
客户端安装
图
图
将Oracle i第一张系统安装盘放入光驱 自动引导安装系统并显示Oracle i安装系统封面窗口 单击[开始安装]按钮 显示安装首页 接着显示如图 所示的 欢迎 窗口 单击[下一步]按钮 进入 文件定位 窗口 在该窗口的目标文本框中输入主目录名称 一般按默认即可 如 OraHome 在路径文本框中输入主目录路径 如D:oracleora 单击[下一步]按钮 显示如图所示的带 正在装载产品列表 进度条的 文件定位窗口 见图
装载完成后 显示所示的 可用产品 窗口 单击第二项 即Oracle i客户端的单选按钮
图
单击[下一步]按钮 显示如图 所示的 安装类型窗口 选择 Administrator 单击[下一步]按钮 显示如图所示的带 执行先决条件 进度条的 安装类型 窗口
窗口说明 Administrator ——表示管理员安装 安装内容包括管理控制台 企业管理工具 网络服务 使用程序以及基本的客户机软件 需要 MB的磁盘空间 运行时 ——表示为数据库应用程序拥护提供了连接Oracle i数据库并进行交互的网络连接服务和支持文件 需要 MB的磁盘空间 自定义 ——表示用户可以自行选择安装 某些附加组件只能通过 自定义 安装类型进行安装
图
装载完成后 显示如图 所示的 摘要 窗口
单击[安装]按钮 显示 安装 窗口
图
复制结束后 显示 配置工具 窗口 如图 所示 我们现在所要做的工作就我们建立服务器/客户端模式的关键 *** 作了!!
图
配置过程中将出现如图 所示的 网络配置向导 窗口 询问是否使用目录服务
是 我要使用目录服务 包括两种服务类型 Oracle Internet目录和微软活动目录
不 我要自己创建网络服务名
lishixinzhi/Article/program/Oracle/201311/18361
删除数据库中重复数据的几个方法 数据库的使用过程中由于程序方面的问题有时候会碰到重复数据 重复数据导致了数据库部分设置不能正确设置…… 方法一 declare @max integer @id integerdeclare cur_rows cursor local for select 主字段 count() from 表名 group by 主字段 having count() > open cur_rowsfetch cur_rows into @id @maxwhile @@fetch_status= beginselect @max = @max set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id @maxendclose cur_rowsset rowcount 方法二 有两个意义上的重复记录 一是完全重复的记录 也即所有字段均重复的记录 二是部分关键字段重复的记录 比如Name字段重复 而其他字段不一定重复或都重复可以忽略 对于第一种重复 比较容易解决 使用select distinct from tableName就可以得到无重复记录的结果集 如果该表需要删除重复的记录(重复记录保留 条) 可以按以下方法删除select distinct into #Tmp from tableNamedrop table tableNameselect into tableName from #Tmpdrop table #Tmp发生这种重复的原因是表设计不周产生的 增加唯一索引列即可解决 这类重复问题通常要求保留重复记录中的第一条记录 *** 作方法如下假设有重复的字段为Name Address 要求得到这两个字段唯一的结果集select identity(int ) as autoID into #Tmp from tableNameselect min(autoID) as autoID into #Tmp from #Tmp group by Name autoIDselect from #Tmp where autoID in(select autoID from #tmp )最后一个select即得到了Name Address不重复的结果集(但多了一个autoID字段 实际写时可以写在select子句中省去此列) 更改数据库中表的所属用户的两个方法 大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了 原因是建表的时候采用了当时的数据库用户…… 更改某个表 exec sp_changeobjectowner tablename dbo 存储更改全部表 CREATE PROCEDURE dbo User_ChangeObjectOwnerBatch@OldOwner as NVARCHAR( ) @NewOwner as NVARCHAR( )ASDECLARE @Name as NVARCHAR( )DECLARE @Owner as NVARCHAR( )DECLARE @OwnerName as NVARCHAR( )DECLARE curObject CURSOR FORselect Name = name Owner = user_name(uid)from sysobjectswhere user_name(uid)=@OldOwnerorder by nameOPEN curObjectFETCH NEXT FROM curObject INTO @Name @OwnerWHILE(@@FETCH_STATUS= )BEGINif @Owner=@OldOwnerbeginset @OwnerName = @OldOwner + + rtrim(@Name)exec sp_changeobjectowner @OwnerName @NewOwnerend select @name @NewOwner @OldOwnerFETCH NEXT FROM curObject INTO @Name @OwnerENDclose curObjectdeallocate curObjectGOSQL SERVER中直接循环写入数据没什么好说的了 大家自己看 有时候有点用处declare @i intset @i= while @i< begininsert into test (userid) values(@i)set @i=@i+ end 无数据库日志文件恢复数据库方法两则 数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 新建一个同名的数据库 再停掉sql server(注意不要分离数据库) 用原数据库的数据文件覆盖掉这个新建的数据库 再重启sql server 此时打开企业管理器时会出现置疑 先不管 执行下面的语句(注意修改其中的数据库名) 完成后一般就可以访问数据库中的数据了 这时 数据库本身一般还要问题 解决办法是 利用数据库的脚本创建一个新的数据库 并将数据导进去就行了 USE MASTERGOSP_CONFIGURE ALLOW UPDATES RECONFIGURE WITH OVERRIDEGOUPDATE SYSDATABASES SET STATUS = WHERE NAME= 置疑的数据库名 Gosp_dboption 置疑的数据库名 single user true GoDBCC CHECKDB( 置疑的数据库名 )Goupdate sysdatabases set status = where name= 置疑的数据库名 Gosp_configure allow updates reconfigure with overrideGosp_dboption 置疑的数据库名 single user false 方法二 事情的起因 昨天 系统管理员告诉我 我们一个内部应用数据库所在的磁盘空间不足了 我注意到数据库事件日志文件XXX_Data ldf文件已经增长到了 GB 于是我决意缩小这个日志文件 经过收缩数据库等 *** 作未果后 我犯了一个自进入行业以来的最大最愚蠢的错误 竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道 无论如何都要保证数据库日志文件存在 它至关重要 甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的 我真是不知道我那时候是怎么想的?!这下子坏了!这个数据库连不上了 企业管理器在它的旁边写着 (置疑) 而且最要命的 这个数据库从来没有备份了 我唯一找得到的是迁移半年前的另外一个数据库服务器 应用倒是能用了 但是少了许多记录 表和存储过程 真希望这只是一场噩梦! 没有效果的恢复步骤 附加数据库_Rambo讲过被删除日志文件中不存在活动日志时 可以这么做来恢复 分离被置疑的数据库 可以使用sp_detach_db 附加数据库 可以使用sp_attach_single_file_db但是 很遗憾 执行之后 SQL Server质疑数据文件和日志文件不符 所以无法附加数据库数据文件 DTS数据导出不行 无法读取XXX数据库 DTS Wizard报告说 初始化上下文发生错误 紧急模式怡红公子讲过没有日志用于恢复时 可以这么做 把数据库设置为emergency mode 重新建立一个log文件 把SQL Server 重新启动一下 把应用数据库设置成单用户模式 做DBCC CHECKDB 如果没有什么大问题就可以把数据库状态改回去了 记得别忘了把系统表的修改选项关掉我实践了一下 把应用数据库的数据文件移走 重新建立一个同名的数据库XXX 然后停掉SQL服务 把原来的数据文件再覆盖回来 之后 按照怡红公子的步骤走 但是 也很遗憾 除了第 步之外 其他步骤执行非常成功 可惜 重启SQL Server之后 这个应用数据库仍然是置疑!不过 让我欣慰的是 这么做之后 倒是能够Select数据了 让我大出一口气 只不过 组件使用数据库时 报告说 发生错误 未能在数据库 XXX 中运行 BEGIN TRANSACTION 因为该数据库处于回避恢复模式 最终成功恢复的全部步骤 设置数据库为紧急模式停掉SQL Server服务 把应用数据库的数据文件XXX_Data mdf移走 重新建立一个同名的数据库XXX 停掉SQL服务 把原来的数据文件再覆盖回来 运行以下语句 把该数据库设置为紧急模式 运行 Use MasterGosp_configure allow updates reconfigure with overrideGo 执行结果 DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系 已将配置选项 allow updates 从 改为 请运行 RECONFIGURE 语句以安装 接着运行 update sysdatabases set status = where name = XXX 执行结果 (所影响的行数为 行)重启SQL Server服务 运行以下语句 把应用数据库设置为Single User模式 运行 sp_dboption XXX single user true 执行结果 命令已成功完成 ü 做DBCC CHECKDB 运行 DBCC CHECKDB( XXX ) 执行结果 XXX 的 DBCC 结果 sysobjects 的 DBCC 结果 对象 sysobjects 有 行 这些行位于 页中 sysindexes 的 DBCC 结果 对象 sysindexes 有 行 这些行位于 页中 syscolumns 的 DBCC 结果 ……… lishixinzhi/Article/program/SQLServer/201311/22060
以上就是关于SQL Server2008中只能附加数据库,不能删除数据库,我手动不能删除,写sql语句也不能删除全部的内容,包括:SQL Server2008中只能附加数据库,不能删除数据库,我手动不能删除,写sql语句也不能删除、完全删除Oracle数据库的方法、SQL Server实用经验技巧集(2)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)