数据库管理员

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

8
列出给定登录名的所有映射用户的查询
查看特定登录名的属性时,可能会看到映射到该登录名的用户列表: 我分析了SQL Server Management Studio(SSMS),发现SSMS一次连接到每个数据库,并从sys.database_permissions中检索信息。 是否可以编写一个查询来检索上面显示的用户映射信息,或者我是否被迫使用游标或sp_MSforeachdb或类似的东西?

1
24x7 vs夜间窗口
在哪里可以找到有关如何更好地进行24x7作业的资源?具有大型数据库的大公司如何做到这一点?我们的夜间工作,例如 清除旧数据 重新索引 更新统计 所有这些似乎都对我们的系统造成了重大影响(即在线用户和实时数据馈送)。我在亚马逊上寻找过与此主题相关的任何书籍,但到目前为止还没有找到任何东西。
19 sql-server 

2
如何在MySQL中生成序列
考虑这个表在MySQL create table numbers (number int); insert into numbers values (3), (2), (9); select * from numbers; +--------+ | number | +--------+ | 3 | | 2 | | 9 | +--------+ 是否有一个简单的查询来生成具有以下列的表 从1到10的数字 如果表号中存在数字,则为1,否则为0 我想您必须创建一个数字序列才能执行此操作。如果可能的话,我想创建一个这样的序列而不将其存储在数据库中。 相关问题:是否有一个选择查询生成一个从1到10(或100或1000)的数字序列?
19 mysql  sequence 

2
恢复转储时禁用所有约束和表检查
我已经获得了PostgreSQL数据库的转储,其中包括: pg_dump -U user-name -d db-name -f dumpfile 然后我继续使用以下命令在另一个数据库中还原: psql X -U postgres -d db-name-b -f dumpfile 我的问题是数据库包含引用约束,检查和触发器,并且其中某些(特别是看起来是检查的)约束在恢复期间失败,因为未按照导致遵守这些检查的顺序来加载信息。例如,在表中插入行可能与CHECK调用plpgsql函数检查条件是否存在于其他不相关的表中的函数相关联。如果后一个表未psql在前一个表之前加载,则会发生错误。 以下是产生这样的数据库的SSCCE,该数据库一旦被转储pg_dump就无法恢复: CREATE OR REPLACE FUNCTION fail_if_b_empty () RETURNS BOOLEAN AS $$ SELECT EXISTS (SELECT 1 FROM b) $$ LANGUAGE SQL; CREATE TABLE IF NOT EXISTS a ( i INTEGER NOT NULL ); …

5
SQL Server 2012:从命令行生成脚本
我正在运行SQL Server 2012。 SQL Server Management Studio可以选择右键单击数据库,然后选择“任务”和“生成脚本”。 有没有一种方法可以通过命令行以某种方式使其自动化? 我想创建一个包含整个数据库的架构和数据的脚本。 之类的工具ScriptDB,并sqlpubwiz.exe似乎都针对SQL Server 2005的什么有关SQL Server 2012?

2
MySQL是否缓存查询?
我正在将MySQL数据库与PHP数据对象(PDO)接口并执行广泛的SQL查询。通常,大约需要1500毫秒;我仍然需要对其进行优化。当我两次运行PHP脚本并且间隔很短时,查询只需要90毫秒。在两种情况下查询都是相同的。当我使用相同的查询运行脚本时,再次经过一段时间后,又需要1500毫秒。 这是为什么?数据库会自动缓存吗?数据库是否有一段时间保存高速缓存,然后自动将其删除? 我假设结果不能被PHP缓存,因为这发生在两个不同的线程中。我不认为PHP会缓存结果,因为它不知道数据库是否已更改。 我每分钟都会运行一个脚本,以向数据库中插入新行。这也可能是一段时间后再次花费1500毫秒的原因。缓存将被删除,因为相关的表不再相同。
19 mysql 


1
这个语法如何运作?{fn CurDate()}或{fn Now()}等
最近,我一直在浏览一些为SQL Server 2005编写的相当老的存储过程,并且发现一些我不理解的东西。它似乎是某种类型的函数调用。 一个样品: SELECT o.name, o.type_desc, o.create_date FROM sys.objects o WHERE o.create_date < {fn Now()} -1; 这将显示所有行sys.objects有一个create_date前24小时前。 如果显示此查询的执行计划,{fn Now()}则会看到该计划已被getdate()数据库引擎替换: SELECT [o].[name],[o].[type_desc],[o].[create_date] FROM [sys].[objects] [o] WHERE [o].[create_date]<(getdate()-@1) 显然,使用{fn Now()}远比钝GetDate()。我会避免像瘟疫这样的语法,因为它没有记录。

5
数据库的mdf文件的位置
我有一个数据库Project。我的问题是我在哪里可以找到数据库的.mdf和_log.ldf,以便可以将数据库转移给另一个用户。我正在使用Microsoft SQL Server 2008 Management Studio 我Ssms.exe的存储在此路径中 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe

5
为什么链接服务器在CASE表达式中限制为10个分支?
为什么这样CASE表达: SELECT CASE column WHEN 'a' THEN '1' WHEN 'b' THEN '2' ... c -> i WHEN 'j' THEN '10' WHEN 'k' THEN '11' END [col] FROM LinkedServer.database.dbo.table 产生这个结果? 错误消息:消息8180,级别16,状态1,行1的语句无法准备。消息125,级别15,状态4,第1行Case表达式只能嵌套到级别10。 显然,这里没有嵌套CASE表达式,尽管有十多个“分支”。 另一个奇怪的地方。此内联表值函数产生相同的错误: ALTER FUNCTION [dbo].[fn_MyFunction] ( @var varchar(20) ) RETURNS TABLE AS RETURN ( SELECT CASE column WHEN 'a' THEN …

2
如果查询在逻辑上相似,为什么计划会有所不同?
我编写了两个函数来回答《七周》中“七个数据库”中第3天的第一个作业问题。 创建一个存储过程,您可以在其中输入自己喜欢的电影标题或演员的名字,它将根据演员出演的电影或类似类型的电影返回前五个建议。 我的第一次尝试是正确的但很慢。返回结果最多可能需要2000毫秒。 CREATE OR REPLACE FUNCTION suggest_movies(IN query text, IN result_limit integer DEFAULT 5) RETURNS TABLE(movie_id integer, title text) AS $BODY$ WITH suggestions AS ( SELECT actors.name AS entity_term, movies.movie_id AS suggestion_id, movies.title AS suggestion_title, 1 AS rank FROM actors INNER JOIN movies_actors ON (actors.actor_id = movies_actors.actor_id) INNER JOIN …

3
SQLCMD命令无法插入重音符号
我试图运行sqlcmd.exe以便从命令行设置新数据库。我正在Windows 7 64位上使用SQL SERVER Express 2012。 这是我使用的命令: SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log 这是一部分sql文件创建脚本: CREATE DATABASE aqualogy COLLATE Modern_Spanish_CI_AS WITH TRUSTWORTHY ON, DB_CHAINING ON; GO use aqualogy GO CREATE TABLE [dbo].[BaseLayers] ( [Code] nchar(100) NOT NULL , [Geometry] nvarchar(MAX) NOT NULL , [IsActive] bit NOT NULL …

5
SQL Server 2008R2的最佳驱动器配置
我有一台运行SQL Server 2008 R2的非常繁忙的数据库服务器,该服务器具有以下设置: SATA RAID 1(2个驱动器)-操作系统/程序 SAS RAID 10(4个驱动器)-SQL数据库文件(数据和日志) SAS RAID 1(2个驱动器)-TempDB(数据和日志) 假设我无法在该服务器中添加其他驱动器,是否充分利用了可用的配置?还是我应该在这里考虑另一种方案,例如将日志与数据文件隔离开? 更新: 对于需要更多硬件详细信息的用户: SATA驱动器(用于OS / Program分区)是:WD 7200 RPM 3 Gb / s 3.5英寸SATA 其他阵列中使用的SAS驱动器是:Seagate 15K RPM 6 Gb / s 3.5英寸SAS 使用的RAID控制器是:LSI 9260-8i SAS / SATA 6 Gb 8端口 更新2: 基于我收到的反馈,它看起来像我有以下几个可行的方案可供选择-我将颁发奖金的人可以告诉我这是很可能是在环境最好的,我已经概述: 保留一切-我可能不会做得更好 将我的2个SAS RAID 1驱动器移到现有的RAID 10阵列中,使其总共由6个磁盘组成 将我的日志文件移动到SAS …

3
在选择中仍具有匹配附加字符的唯一标识符
我们正在使用带有唯一标识符的SQL Server 2012,并且我们注意到在进行选择时在末尾添加了其他字符(而不是36个字符)时,它仍然会返回与UUID的匹配项。 例如: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8' 返回带有uuid的行7DA26ECB-D599-4469-91D4-F9136EC0B4E8。 但是,如果您运行: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8EXTRACHARS' 它还返回带有uuid的行7DA26ECB-D599-4469-91D4-F9136EC0B4E8。 选择SQL Server时,似乎会忽略除36个字符之外的所有字符。这是错误/功能还是可以配置的东西? 这不是一个大问题,因为我们在前端进行了长度验证,但对我来说似乎不是正确的行为。

3
PostgreSQL:我可以在负载下运行的实时数据库上执行pg_start_backup()吗?
我们已建立的复制已损坏(停机期间“已删除请求的WAL段”)我们无法轻松地再次停止主服务器。 我们可以做 pg_start_backup(), rsync ${PGDATA}/ 主人到奴隶, pg_stop_backup() ...当主postgresql仍处于满负荷状态时?(否则会pg_start_backup()导致 餐桌锁 I / O块 不一致, 火警, 数据库响应缓慢 换句话说,会pg_start_backup()影响我们的应用程序吗?

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.