数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

5
等待数据库引擎恢复句柄失败。检查SQL Server错误日志中是否存在潜在原因[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 我尝试安装SQL2008R2-SQL2012-sql2014 2014-07-17 16:31:16.00 spid14s Error: 17190, Severity: 16, State: 1. 2014-07-17 16:31:16.00 spid14s Initializing the FallBack certificate failed with error code: 1, state: 20, error number: 0. 2014-07-17 16:31:16.00 spid14s Unable to initialize SSL encryption because a valid certificate could not be found, and it is not …

1
PostgreSQL的GEQO(遗传查询优化)的修改
我需要实现与PostgreSQL的GEQO功能一致的功能。我知道GEQO方法是将查询计划编码为整数字符串,并且GEQO随机生成这些可能的连接序列。来源:http : //www.postgresql.org/docs/9.3/static/geqo-pg-intro.html 我的问题是:如果我明确知道正确的连接顺序,那么如何修改GEQO函数,这样我就不必搜索其他连接顺序。例如,如果我知道加入4个关系的最佳方法是4-1-3-2,则不必检查其他排列。 关于如何在PostgreSQL中实现GEQO的资料不多。PostgreSQL仅给出了GEQO功能的整体视图,而没有太多解释。 还是可以不使用GEQO在standard_join_search()本身中实现此功能?

1
如何将ctid分解为页码和行号?
表格中的每一行都有一个系统列 ctid,其类型tid表示该行的物理位置: create table t(id serial); insert into t default values; insert into t default values; select ctid , id from t; ctid | ID :---- | -: (0,1)| 1个 (0,2)| 2 dbfiddle 在这里 是什么让刚刚页面数从最好的方式ctid在最适合的类型(例如integer,bigint或numeric(1000,0))? 我能想到的唯一方法是非常丑陋。

3
如何在PostgreSQL(或SQL)中实现业务逻辑权限?
假设我有一个项目表: CREATE TABLE items ( item serial PRIMARY KEY, ... ); 现在,我要为每个项目引入“权限”的概念(请注意,这里我不是在谈论数据库访问权限,而是该项目的业务逻辑权限)。每个项目都具有默认权限以及每个用户的权限,这些权限可能会覆盖默认权限。 我试图考虑实现此问题的几种方法,并提出了以下解决方案,但是我不确定哪个是最好的,以及为什么: 1)布尔解 为每个权限使用一个布尔列: CREATE TABLE items ( item serial PRIMARY KEY, can_change_description boolean NOT NULL, can_change_price boolean NOT NULL, can_delete_item_from_store boolean NOT NULL, ... ); CREATE TABLE item_per_user_permissions ( item int NOT NULL REFERENCES items(item), user int NOT …
16 postgresql  enum 

1
是否需要担心ASYNC_NETWORK_IO等待类型?
在查看需要花费很长时间才能执行的存储过程的列表时,最引人注目的是它。但是,大多数等待时间(81%)是ASYNC_NETWORK_IO,我知道原因:存储过程传输大约400 MB的信息。 在文档中,它指出ASYNC_NETWORK_IO的原因是客户端无法跟上大量数据的流传,这可能是事实。我不确定如何使客户端保持同步,因为它所做的只是通过ADO.NET调用存储过程,然后仅处理数据集。 因此,鉴于此信息,我是否应该担心此过程的ASYNC_NETWORK_IO等待类型?它实际上对服务器性能有影响吗? 其他信息: 我正在使用SQL Server 2005的Service Pack 2。 客户端应用程序与SQL Server位于同一盒子上(我知道,我知道...但是我对此无能为力)。


3
Oracle没有为长键使用唯一索引
我的测试数据库中有一个包含25万行的表。(有几亿个产品正在生产,我们在那里也可以观察到相同的问题。)该表具有nvarchar2(50)字符串标识符(不是null),并且具有唯一索引(不是PK)。 标识符由第一部分组成,该部分在我的测试数据库中具有8个不同的值(在生产中大约有1000个),然后是@符号,最后是一个1到6位数字的数字。例如,可能有5万行以“ ABCD_BGX1741F_2006_13_20110808.xml @”开头,然后是5万个不同的数字。 当我根据其标识符查询单行时,基数估计为1,成本非常低,可以正常工作。当我在一个IN表达式或一个OR表达式中查询带有多个标识符的多行时,索引的估计是完全错误的,因此使用了全表扫描。如果我用一个索引强加索引,它会非常快,实际上全表扫描的执行速度要慢一个数量级(并且生产速度要慢得多)。因此,这是一个优化程序问题。 作为测试,我使用完全相同的DDL和完全相同的内容复制了该表(在相同的模式+表空间中)。我在第一个表上重新创建了唯一索引以取得良好效果,并在克隆表上创建了完全相同的索引。我做了一个DBMS_STATS.GATHER_SCHEMA_STATS('schemaname',estimate_percent=>100,cascade=>true);。您甚至可以看到索引名称是连续的。因此,现在两个表之间的唯一区别是,第一个表是在很长一段时间内以随机顺序加载的,块分散在磁盘上(与其他几个大表一起放在一个表空间中),第二个表是成批加载的插入选择。除此之外,我无法想象任何区别。(自上次大删除以来,原始表已缩小,此后没有一个删除。) 这是病假表和克隆表的查询计划(黑色笔刷下的字符串在图片中相同,灰色笔刷下的字符串也一样): (在此示例中,有1867行以黑色刷过的标识符开头。2行查询产生的基数为1867 * 2,3行查询产生的基数为1867 * 3,依此类推。巧合的是,Oracle似乎并不在乎标识符的结尾。) 什么可能导致此行为?显然,在生产中重新创建表将非常昂贵。 USER_TABLES:http : //i.stack.imgur.com/nDWze.jpg USER_INDEXES:http : //i.stack.imgur.com/DG9um.jpg 我只更改了架构和表空间名称。您可以看到表名和索引名与查询计划屏幕快照上的相同。

4
SQL Server 2008 R2错误:15023,用户,组或角色已经存在
我的测试数据库存在权限问题。 我无法访问报告数据库,应用程序的帮助文档说要执行以下操作: Resolution: 1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases. 2. Expand the security folder. 3. Select logins and right click on the <username> user and choose properties. 4. Click the User Mapping tab 5.Make sure the …

4
MySQL导入csv文件错误13(HY000):无法获取/path/file.csv的统计信息(错误代码:2)
我绝对是MySQL(5.5.34)/ Linux(Ubuntu 12.04 LTS)的初学者。 我用一个表创建了一个简单的数据库。当尝试通过'data_test.csv文件将数据导入其中时,出现错误消息13。 来自终端的专家如下: mysql> source /home/g/stockrecdb/load_test.sql; Database changed ERROR 13 (HY000): Can't get stat of '/home/stockrecdb/data_test.csv' (Errcode: 2) mysql> 注意:如果在LOAD DATA LOCAL INFILE中使用LOCAL,则会出现错误:ERROR 1148(42000):此MySQL版本不允许使用的命令
16 mysql  errors  csv 

2
SQL Server 2012将备份还原到新的数据库名称
我似乎还记得,在2008年,您可以通过更改restore-wizard中“ Destination Database”字段中的名称来将备份还原到数据库的新副本。它将创建一个全新的数据库,该数据库是还原到所需时间点的原始数据库的副本。我一辈子都没有想过如何使SQL 2012做到这一点。 现在,我了解到(感谢Aaron Bertrand)这并没有真正改变,而2012年实际上让我更清楚地看到,这种策略首先是一个坏主意! 因此,我需要做的是:使用备份数据库从现有数据库“ MyDB”创建一个新数据库“ MyDB_Copy”。我们有每晚的完整备份(.bak)和每15分钟的TLogs(.trn)。我根本不希望现有的“ MyDB”受到影响/触动,因为它是“实时的”。 从主要的完整备份文件创建MyDB_Copy之后,我需要还原几十个TLog备份以使其到达某个时间点。

4
如何中断SQL脚本执行
我正在使用sql脚本,如果不满足某些条件,我有停止继续执行脚本的要求。 当我用Google搜索它时,我发现RaisError严重性级别为20会终止它。但是由于某些原因,我无法使用该选项。 能否请我提供停止SQL脚本执行的替代方法。

1
如何摆脱“最大用户连接”错误?
我正在将MySQLi用于我的Web应用程序,但是每当我要访问某个特定页面时,我都会得到mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections。 我已经尝试关闭所有连接,但这并不能改善情况。 有没有一种方法可以确切地知道在任何特定时刻打开了哪些连接,或者可以帮助我解决此问题的任何其他有用数据? 顺便说一句,我正在使用PHP 5.2.17和MySQL 5.1。

1
SQL Server nvarchar(max)vs nvarchar(n)影响性能
这是SQL Server 2008 R2 SP2。我有2张桌子。两者是相同的(数据和索引),除了第一个表的VALUE列nvarchar(max)与第二个表的列相同nvarchar(800)。该列包含在非聚集索引中。我还在两个表上创建了聚集索引。我还重建了索引。此列中的最大字符串长度是650。 如果我对两个nvarchar(800)表运行相同的查询的速度始终更快,那么很多倍。当然,这似乎正在破坏“ varchar”的目的。表格包含800,000多行。该查询应查看大约110,000行(这是该计划的估计值)。 根据io统计信息,没有lob读取,因此所有内容似乎都在行中。执行计划是相同的,除了两个表之间的开销百分比略有不同,并且估计的行大小更大时nvarchar(max)(91字节对63字节)。读取次数也几乎相同。 为什么会有所不同? =====架构====== CREATE TABLE [dbo].[table1]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ProductID] [bigint] NOT NULL, [ProductSkeletonID] [bigint] NOT NULL, [Value] [nvarchar](max) NOT NULL, [IsKeywordSearchable] [bit] NULL, [ValueInteger] [bigint] NULL, [ValueDecimal] [decimal](18, 2) NULL, [ValueDate] [datetime] NULL, [TypeOfData] [nvarchar](20) NOT NULL, CONSTRAINT [PK_table1] PRIMARY …

3
重设IDENTITY值
我有一个带有IDENTITY列的表。在开发时,我会不时删除这些行,然后再次添加它们。但是,当我再次添加IDENTITY值时,它们始终保持增加,并且不是从1开始。现在我的ID是从68-> 92,这使我的代码崩溃。 如何重置IDENTITY值?

7
使用WITH REPLACE还原备份时出现错误3154
我的计算机上安装了SQL 2012 SP1。我备份了一个数据库test.bak。 我有一个名称test2相同的数据库,但是数据已更改。 我想test.bak通过test2数据库还原。 我总是收到错误: 错误3154:备份集保存现有数据库以外的数据库的备份。 我试过了: 我右击 test2 -> Restore database -> From device 我选择test.bak并检查了With Replace但出现错误。 然后我尝试右键单击 test2 -> Restore file and filegroups 我选择test.bak并检查了With Replace但出现错误。 我可以删除旧数据库,然后使用正确的名称还原备份,但是当我使用SQL 2008时,在现有数据库上进行还原没有问题。 似乎因为我使用SQL2012,所以我经常收到此错误!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.