数据库管理员

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

3
SQL Server Management Studio 2014备份-设置属性设备错误
我最近将本地SQL Server升级到了版本2014,该版本还安装了SSMS2014。 使用SQL Server Management Studio 2014创建备份(本地和远程,服务器版本2008-2014)时,出现以下错误: 要完成此操作,请设置属性设备。 在下拉菜单中,我选择了“磁盘”,还选择了备份路径。该路径存在于服务器上,并且我对此路径具有完全权限。 如果我使用具有相同设置的旧SQL Server Management Studio 2012,则备份可以正常工作。 它也可以使用T-SQLBACKUP DATABASE SOMEDATABASE TO DISK = 'D:\SomeDir\SomeDataBase.bak' WITH COMPRESSION 因此,该问题必须与2014版管理工具有关。我在互联网上找到的唯一解决方案是由于缺少路径,对我而言并非如此。 有没有人遇到过和/或解决了这个问题? 编辑:添加了屏幕截图(德语界面) 翻译: -Vollständig: 完整-Datenträger:磁盘 媒体和安全选项不变。仅以Master数据库为例,其他每个数据库都发生过这种情况。 更新21.07.2015 该问题似乎与我在德语Windows上使用英语包和德语SQL Server 2014安装有关。如果Windows显示语言设置为德语,该问题将消失。如果Windows显示语言设置为英语,则该问题再次出现。 感谢您的所有贡献。

2
域管理员无法连接到SQL Server
我有Windows Server 2012 R2域控制器和数据库服务器(W2K12R2 / SQL Server 2012)。 作为允许的用户组,我已授予组“ domain-admins” sysadmin权限。 但是以某种方式,任何域管理员都无法连接到该SQL Server,但是当我直接将域管理员用户添加为允许用户时,它确实可以工作。活动目录确实起作用。RDP登录有效。我想念什么吗? 有人知道如何授予对整个“域管理员”组的访问权限吗? 错误消息是: 伺服器名称:SRV-DB 错误号:18456 施韦格勒:14 状态:1 代码行:65536 在事件日志中说(翻译): 检查具有基础结构故障的基于令牌的服务器访问时出错。 状态为“ 1”。我使用RDP作为域管理员登录到该数据库服务器。我必须以“以管理员身份运行”显式启动SSMS。然后,我可以访问“本地主机”。如果我不以管理员身份启动SSMS,则无法这样做。我认为在“域管理员”组中就足够了。

3
在MySQL中批量删除大型表
我有一个Notification表,其中包含1000个IOPS的Amazon RDS中的大约1亿行主机,我想删除一个月以上的行。 如果这样做DELETE FROM NOTIFICATION WHERE CreatedAt < DATE_SUB(CURDATE(), INTERVAL 30 day);,将使用所有IOPS,整个过程将花费数小时,并且由于“超出了锁定等待超时;尝试重新启动事务”,因此无法插入许多新条目。 我试图按照此处描述的方式进行操作:http : //mysql.rjweb.org/doc.php/deletebig 但是,我使用的是UUID而不是增量ID。 在不影响正在插入/更新的新数据的情况下,删除这些行的正确而有效的方法是什么?

6
选择具有相同ID但为null的行,并在该ID的另一列中选择其他值
我只想获得具有值NULL和某些值的行,而不是NULL特定的用户名列。 如果该特定用户名的两行均为null或均具有null以外的其他值,则该行不应出现在输出中。如果同一个用户名存在多于两行的null和其他值,则应显示它们。 以下是示例示例和输出。如何使用sql查询来完成? +----------+-------+ | username | col2 | +----------+-------+ | a | abc | | a | ef | | b | null | | b | null | | c | der | | c | null | +----------+-------+ 输出 +----------+------+ | username | col2 | +----------+------+ | …

5
Postgres继承分区表的索引
我有一个大约有6000万行的表,该表按状态划分为53个子表。这些表“继承”大表,如下所示: CREATE TABLE b2b_ak (LIKE b2b including indexes, CHECK ( state = 'AK') ) INHERITS (b2b8) TABLESPACE B2B; 我的问题是:如果在copy语句完成后才在b2b8上建立索引,那么子表会继承索引吗?换句话说,我想这样做: Create b2b8 Create b2b8_ak inherits b2b8 COPY b2b8 FROM bigcsvfile.csv CREATE INDEX CONCURRENTLY 事实证明,已经在子表上创建了所有索引。

5
PostgreSQL相当于MySQL查询变量?
有没有一种直接的方法可以将这些类型的MySQL查询改编为PostgreSQL: 在MySQL中设置变量 set @aintconst = -333 set @arealconst = -9.999 好像没有。 从SELECT查询分配变量,然后在我的SQL中使用这些变量,例如: select @pfID := id from platform where bios like '%INTEL%' select @clientID := id from client where platformID = @pfID 我非常感谢指针,尤其是在(2)上。

2
TempDB不会收缩。没有公开交易
我在SQL 2008上有一个TempDB,它已经变得很大(> 40gb),我想缩小它。我已经通过Management Studio使用了dbcc收缩数据库,dbcc收缩文件和收缩命令。 我收到以下错误: 页面1:4573184无法移动,因为它是工作表页面。 我已经能够通过运行DBCC FREEPROCCACHE并重新运行其中一个收缩例程来回收一些空间,使我摆脱危险,但是显然这不是理想的选择,可能只会给我带来一点时间。 我已经运行过DBCC OpenTran,那里没有东西挂。 我在Internet上阅读的所有内容都归结为回收SQL Server ...肯定有更好的方法...有人吗? 谢谢, 汤姆

1
允许非系统管理员,SQL Server代理作业的非所有者执行该作业
我有一份运行SSIS程序包的工作。 当前所有者是代理帐户。我可以从sys-admin帐户手动运行作业。 我们的网络服务使用受限帐户登录。它需要执行作业。当前它根本看不到工作(当我尝试按名称执行时,它说它不存在)。 我尝试将工作所有者更改为受限帐户。现在它可以看到该作业,但是该作业执行失败,因为它不再运行SSIS包。 必须有一种方法允许受限帐户运行另一个帐户拥有的工作,对吗?

1
明确授予权限以更新必要的串行列的序列?
最近,我确实以超级用户身份创建了一个表格,其中包括一个序列ID列,例如, create table my_table ( id serial primary key, data integer ); 当我希望我的非超级用户用户对该表具有写权限时,我授予了它权限: grant select, update, insert, delete on table my_table to writer; 在这样做之后的一个随机时间点,该用户进行的插入操作开始失败,因为该用户没有权限修改my_table_id_seq与串行列关联的序列。不幸的是,我无法在当前数据库中重现该内容。 我通过为用户提供所需的权限来解决此问题,如下所示: grant all on table my_table_id_seq to writer; 有人可以帮助我了解 为什么在某个时候以前足够的权限可能会开始失败? 授予具有串行列的表的写许可权的正确方法是什么?

1
PostgreSQL中的SQL每小时​​数据聚合
我是数据库的新手,因此正在寻求您的帮助。 我有一个包含时间序列数据的表。 2012/01/01 00:10, 10 2012/01/01 00:30, 5 2012/01/01 01:00, 10 2012/01/01 01:40, 10 2012/01/01 02:00, 20 该表通过仅保留间隔的上限来存储基于间隔的数据。例如,第一行代表从[00:00-00:10]到10的间隔,第二行代表从(00:10-00:30]到5的间隔,第三行代表(00:30-01:00)的时间间隔,值为10。 我需要在Postgres中进行高效的查询,以汇总每小时数据,以获取上述结构。因此结果将是这样的: 2012/01/01 00:00, 2012/01/01 01:00, 25 2012/01/01 01:00, 2012/01/01 02:00, 30 请注意,时间序列数据很大,因此对其建立索引的任何帮助将不胜感激。 谢谢,丹

2
为什么不使用我的计划指南?
最近,我们遇到了临界点问题,由于查询优化器会忽略搜索列上的非聚集索引,因此一些过去几秒钟即可完成执行的报表查询现在要花费2分钟以上的时间。下面的示例查询: select top 100 * from [dbo].[t_Call] where ID > 0 and throwtime between '3/20/2014 7:00:00 AM' and '3/24/2014 6:59:59 AM' order by id 该ID列是聚集索引,并且Throwtime具有非聚集索引。在这种情况下,我们注意到使用了排序方式throwtime而不是ID更改查询计划和非聚集索引。我们还计划归档一些旧数据(当前有2000万行!!)。但是在应用程序中进行这些更改将需要一些时间,我需要找到一种方法使报表运行得相当快,而无需在应用程序级别进行更改(哦,这就是生命!)。 输入计划指南。我使用非聚集索引查询提示创建了以下计划指南,由于某种原因,仍然不使用非聚集索引。我想念什么吗? EXEC sp_create_plan_guide @name = N'[prod2reports_callthrowtime]', @stmt = N'select top 100 * from [dbo] . [t_Call] where ID > @0 and @1 < = ThrowTime …

2
选择查询花费的时间超过了原先的时间
我有一个具有近2300万条记录的MySQL数据库表。该表没有主键,因为没有唯一的键。它有2列,均已索引。下面是它的结构: 以下是一些数据: 现在,我运行了一个简单的查询: SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001' 不幸的是,这花费了超过5秒钟才能检索数据并将其显示给我。我的未来表将有1500亿条记录,因此这一次非常高。 我运行Explain命令以查看发生了什么。结果如下。 然后,我使用以下命令运行配置文件。 SET profiling=1; SELECT `indexVal` FROM `key_word` WHERE `hashed_word` = '001'; SHOW profile; 以下是分析的结果: 以下是有关我的表格的更多信息: 那么,为什么要花这么长时间?他们也被索引!将来,我必须运行很多LIKE命令,因此这会花费太多时间。出了什么问题?


2
合并两个具有不同WHERE子句的SELECT查询
我有一张桌子。我需要合并两个SELECT查询。两者都有不同的where子句。例如 SELECT U_REGN as 'Region', COUNT(callID) as 'OpenServices', SUM(CASE WHEN descrption LIKE '%DFC%' THEN 1 ELSE 0 END) 'DFC' FROM OSCL WHERE ([status] = - 3) GROUP BY U_REGN ORDER BY 'OpenServices' desc 这给我结果 Region | OpenServices | DFC Karaci | 14 | 4 Lahore | 13 | 3 Islamabad …

1
sqlproj中的参考程序集未部署到服务器
我有一个Visual Studio 2013数据库项目这需要一个修改版本的FASTJSON作为参考。我在参考属性中选择了Generate DDL,如以下屏幕截图所示: 在.sqlproj msbuild文件中: <Reference Include="fastJSON"> <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath> <GenerateSqlClrDdl>True</GenerateSqlClrDdl> </Reference> 但是bin / debug / Project.sql不包含的行CREATE ASSEMBLY fastJSON . . .。手动添加程序集有效,然后我的项目将部署并运行。如何使Visual Studio部署我的程序集?

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.