数据库管理员

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

1
如何在Sequel Pro上从远程服务器转储整个数据库
我有一个数据库连接到SequelPro Mac OSX上的远程主机。我如何转储整个数据库。我需要像mysqldump命令一样执行转储: $ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql] 我找到了表转储选项,但是我需要完整的数据库转储。
14 mysql  mysqldump 

1
为什么使用CASE,多个COUNT比一个SUM快?
我想知道以下两种方法中哪一种速度更快: 1)三COUNT: SELECT Approved = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Approved'), Valid = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Valid'), Reject = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Reject') 2)SUM与FROM-clause: SELECT Approved = SUM(CASE WHEN Status = 'Approved' THEN 1 ELSE 0 END), …

5
属性大小不适用于数据库
我最近将数据库还原到了从(SQL Server 2008 R2 Enterprise)备份的同一实例,发现我无法访问数据库属性。 我已经完成以下工作: 检查数据库所有者使用正确设置sp_helpdb。 将数据库所有者更改为sa。不能解决。 将数据库所有者更改回我的sysadmin用户。不能解决。 DBCC updateusage针对受影响的数据库发出。不能解决。 DBCC CheckDB在还原的副本上运行到另一个实例。找不到腐败。访问数据库属性窗口时,从同一备份文件还原的副本没有引发任何错误。 有人可以帮忙吗? 尝试查看属性时收到的错误消息是: 无法显示请求的对话框。(SqlMgmt) 属性大小不适用于数据库“ [DBNAME]”。 该属性对于该对象可能不存在,或者由于访问权限不足而无法检索。(Microsoft.SqlServer.Smo) 我sysadmin在这种情况下。 更新:根据建议,我创建了一个新用户,使其成为sysadmin并将数据库所有者更改为该用户。不幸的是没有修复。我将查看探查器跟踪是否产生任何有用的信息。 更新:Aaron-原始数据库已重命名并脱机,但仍在该实例上。然后使用原始名称还原了该数据库的备份。新数据库文件的文件名与原始文件名不同,因为它们与原始mdf / ldf位于同一文件夹中。恢复的数据库当前正在正常驱动我们的关键应用程序。

2
无法从完全备份还原SQL Server数据库,日志处理失败,数据库处于“还原”状态
我试图在我的PC的本地SQL Server Developer Edition 12.0.2000.8上建立数据库以用于开发目的。我有完整的数据库备份和单独的仅事务日志备份文件,这些文件是通过网络发送给我的。 尝试从完全备份还原时,经过一段时间(大约1个小时,数据库的大小约为270 GB),出现错误: System.Data.SqlClient.SqlError:处理数据库“数据库名称”的日志时发生错误。如果可能,请从备份中还原。如果没有备份,则可能有必要重建日志。(Microsoft.SqlServer.SmoExtended) 此后,数据库处于“正在还原..”状态。 我想运行类似的东西(从这个问题中得到它) ALTER DATABASE recovery_test_2 SET EMERGENCY; ALTER DATABASE recovery_test_2 SET SINGLE_USER; DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS; 针对它,但是自然地我不能,因为数据库处于'Restoring ..'状态。在数据库上重新启动还原过程会导致相同的错误消息,再次删除和还原也无济于事。 如何启动数据库并正常工作?事务的一致性对我来说并不重要。 SSMS自动生成的还原脚本: USE [master] RESTORE DATABASE [database_name] FROM DISK = N'D:\database_name.bak' WITH FILE = 1, MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf', MOVE N'database_name_index' …

2
条件外键关系
我目前在两个实体之间有一个外键,我想使该关系以表之一的entityType为条件。这是表格的层次结构,这是通过FK从孩子到父母的折算完成的 Store / \ Employees \ TransactionalStores / | \ Kiosks | BrickMortars Onlines 我目前有从员工到商店的FK关系 ALTER TABLE Employees ADD CONSTRAINT Employee_Store FOREIGN KEY (TransStoreId) REFERENCES TransactionalStores(StoreId) 我想添加条件: WHERE TransactionalStores.storeType != 'ONLINE_TYPE' 这是否可能,或者我必须将TransactionalStores分为两个新的子类型(例如PhysicalStores和VirtualStores)

1
错误:无法删除文件”(错误2:无此类文件或目录)
每次使用pgAdmin III还原数据库时,都会出现以下pgAdmin III错误: 错误:无法删除文件”(错误2:无此类文件或目录) 参见pgadmin日志。 我的配置: x86_64-unknown-linux-gnu上的PostgreSQL 9.4.4,由gcc(Ubuntu 4.8.2-19ubuntu1)编译4.8.2,64位 Linux 3.19.0-26-generic#28〜14.04.1-Ubuntu SMP Wed Aug 12 14:09:17 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

4
应用程序中的Azure SQL数据库“用户登录失败”,但在SSMS中工作正常
我想尝试Azure SQL Database V12上包含的数据库用户功能,但是在进行身份验证时遇到问题,这对我来说似乎很奇怪。 我创建了一个名为的数据库Classifier。我将IP添加到了防火墙规则中,以便可以从工作站上的SSMS连接到Azure db服务器。一旦能够通过SSMS进行管理连接,我就尝试将具有密码的用户添加到数据库中,如下所示: CREATE USER classifier WITH PASSWORD='thepassword' 我还将此用户添加到数据编写者和读取者角色: exec sp_addrolemember 'db_datawriter', 'classifier' exec sp_addrolemember 'db_datareader', 'classifier' 之后,我可以使用来自SSMS的这些凭据连接到数据库: 但这就是问题的所在:我尝试了几种不同的连接字符串,但似乎无法在我正在开发的Web应用程序中建立连接。它在Azure环境中不起作用,因此我正在localhost上运行,并具有到Azure数据库的连接字符串,并且它将无法连接。这是我目前正在使用的连接字符串: <add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/> 我尝试过为用户重置密码(通过SSMS),然后更新连接字符串。我还通过将密码直接从此连接字符串中复制并复制到SSMS的“连接”对话框中来仔细检查了密码,以确保那里没有错字。 我在Azure数据库服务器中启用了审核,希望获得有关失败原因的详细信息,但我得到的只是以下内容: 这就是我遇到的问题。通过文档或博客可以找到的大多数内容都表明,要做的事情是查看SQL Server日志,以查看真正的错误状态,这将更狭窄地指示失败的性质,但是由于我就Azure而言,没有办法做到这一点(据我所知)。 是什么会导致应用程序在SSMS(以及附带的LinqPad和Visual Studio Server Explorer)成功的地方失败?

4
SQL Server Developer Edition 2012或2014-下载
我已经听说(我很确定)Developer Edition是免费的,下载它不需要注册。但是,当我今天开始寻找它时,我找不到从哪里得到它的。我的理解是对还是错?抱歉,我在这里没有找到类似的问题。有任何想法吗?
14 sql-server 

1
SQL Server每天重新创建计划
我们的生产环境中存在这个问题。 Windows NT 6.1(内部版本7601:Service Pack 1)上的Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)-企业版(64位)。 SQL Server将删除所有(几乎100%)旧的执行计划,并每天隔夜(从11:00 PM到8:00 AM)重新创建它们。当“自动更新统计信息”处于禁用状态时,甚至会发生这种情况。我们已在过去2-3周内启用了“自动更新统计信息”。但它仍在发生。 我们真的不知道是什么触发了计划的重新生成,但是我们确信我们不会手动进行。 与重新生成计划的时间真正吻合的唯一一件事是我们拥有的DB​​维护工作:每日索引重组(当碎片为5-30%时)和每日索引重建(当碎片大于30%时) )的工作。通常,此日常维护工作仅会进行重组(因为索引碎片每天都不会超过30%)。 影响: 这些新创建的计划使一些UDF调用/查询调用(从UI /网页调用)花费的时间更长(几分钟而不是不到1秒),因此会话堆积如山,使CPU接近90% 。 当这些卡住的会话被强制删除(在DB端)时,问题消失了; 1)当手动清除了所有相应的执行计划(对于查询)时,或者2)当UDF改变了(对于功能)时,问题就消失了。从那时起,SQL Server创建的任何新计划都可以在一整天内完美运行,直到第二天早上出现相同问题为止。同样,这种行为也不是100%一致的,我们并不是每天早上都真正看到它。但是,在一段时间内,我们连续4-5天一直在观察它。 问题似乎发生在工作时间早晨,即在更密集地访问UI /网页时。 有谁知道这是什么原因以及如何解决这个问题的线索?任何帮助将非常感激。



2
使用多个日期范围对数据进行计数
可能以前有人问过这个问题,但我无法弄清楚。我有一张phone_clicks桌子(sql fiddle http://sqlfiddle.com/#!15/855e0/1) CREATE TABLE phone_clicks ( id integer NOT NULL, date date NOT NULL, industry_id integer NOT NULL, clicks integer DEFAULT 0 NOT NULL ); insert into phone_clicks(id, date, industry_id, clicks) values (1, '2015-03-16', 1, 15), (2, '2015-03-16', 2, 7), (3, '2015-03-16', 3, 0), (4, '2015-03-17', 1, 12), (5, …
14 postgresql 


2
stats_column_id和index_column_id不会随着聚集索引的物理顺序更改而更新
除非我对列的用途有误解,否则以下代码指示更改聚集索引的结构不会更改sys.stats_columns DMV中stats_column_id列的顺序位置()。(在AdventureWorks2014和AdventureWorks2008R2中测试) select i.name, c.name, ic.column_id, ic.index_column_id from sys.indexes i join sys.index_columns ic on i.object_id = ic.object_id and i.index_id = ic.index_id join sys.columns c on i.object_id = c.object_id and ic.column_id = c.column_id where i.name = 'PK_BusinessEntityAddress_BusinessEntityID_AddressID_AddressTypeID' order by ic.key_ordinal; select sh.name,s.name, c.name, c.column_id, sc.column_id, sc.stats_column_id from sys.stats s join sys.stats_columns …


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.