数据库管理员

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

1
SentryOne Plan Explorer是否将UDF中的读数计数?
我有这样的查询: select dbo.fn_complexFunction(t.id) from mytable t 在SQL Sentry Plan Explorer中,我注意到我必须运行Get Estimated Plan才能使查询计划包括UDF。 运行“获取实际计划”时,似乎逻辑读取和其他指标未包括UDF中发生的操作。在这种情况下,是否是使用Profiler的唯一解决方法?

4
SQL Server已启动,但未在任何端口上侦听
我新安装了SQL Server2012。尚未创建数据库。我可以使用sa / password打开Management Studio。Binn \ sqlservr.exe作为服务启动,我可以在服务列表中看到它已启动。但是,它没有监听1433端口,甚至没有监听默认的任何端口,如下所示: tasklist|find /I "sql" 我有: sqlservr.exe 5668 Services 0 40,112 K 我认为其中5668是PID。然后要获取PID =“ 5668”正在侦听哪个端口: netstat -ano | find /I "5668" 但是除了空白我什么都没有。另一方面,在搜索此站点中的帖子之后,我仔细检查了我的SQL Server配置:开始->所有程序-> Microsoft SQL Server 2012->配置工具-> SQL Server配置管理器-> SQL Server SQL Native Client 11.0配置->客户端协议-> TCP / IP->默认端口1433。有3种服务:SQL Server(MyInstanceName),SQL Server代理(MyInstanceName)和SQL Server浏览器。最后两个停止。 默认情况下,在启用SQL Server配置管理器-> SQL Server网络配置-> …


1
建议使用STATISTICS_NORECOMPUTE
我最近参与了维护一组具有一些有趣的索引问题的数据库。使我最恼火的因素之一是开发,测试,模型和生产机器之间的指标差异。由于差异使调整查询变得相当困难,因此将它们同步起来是我的第一个项目。 在比较测试和模型环境时,我注意到模型环境中的大多数索引都STATISTICS_NORECOMPUTE设置为,ON而测试中的索引没有设置。在所有环境中,每天都有一项工作来更新所有数据库的统计信息。 我从来没有处理过STATISTICS_NORECOMPUTE,所以这是我的问题。处理此设置时是否有最佳做法?如果我要在一天结束时进行统计信息更新,最好打开STATISTICS_NORECOMPUTE所有环境中的所有索引吗?还是有充分的理由不这样做? 编辑:我发现了金佰利特里普的关于这一主题的博客之一在这里,似乎表明STATISTICS_NORECOMPUTE应谨慎充其量只能使用。但是我仍然担心在全球范围内将其关闭。有没有人尝试过,他们经历了什么?

2
在SQL Server代理中运行Powershell脚本时出错
我有一个通过SQL Server代理运行的SQL作业(正在运行SQL Server 2012 Enterprise)。作业的最后一步是运行位于网络共享上的应用程序。不幸的是,我不知道应用程序所在的文件夹的名称(该文件夹是版本号),因此我正在使用PowerShell查找它: set-location "\\server\companydocuments\MyApp\Application Files\" $name = Get-ChildItem | sort name -desc | select -f 1 | select name cd $name.name & ".\Application.exe" 如果我在SQL Server上打开PowerShell窗口,则可以正常工作。当我在SQL Server代理中运行此命令时,出现以下错误: A job step received an error at line 1 in a PowerShell script. The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'" 我以为这可能是权限问题,所以我尝试在我的凭据(这是测试服务器,不是生产服务器)下运行SQL …

1
SQL中的最小记录条件
我已经写了一个脚本来测试此页面上的声明http://technet.microsoft.com/zh-cn/library/dd425070(v=sql.100).aspx,其标题为“何时汇总最小记录条件”最小记录不会或不会发生。 使用此脚本,我发现每种不同类型的插入的日志记录长度的总和如下: 堆空没有Tablock 60000 带有锁的堆空​​56000 堆非空无制表符60000 非空堆,带锁56000 堆加索引为空,没有制表符126188 堆加索引为空,带挂锁114188 堆加索引非空无选项卡锁138696 带有Tablock的堆加索引不为空112000 集群为空命令无制表符64168 集群空,带tablock 56168命令 群集为空无序无标签锁73388 空群集,无序,带有tablock 65388 群集非空无标签锁63912 带锁的群集非空55944 群集加索引为空,没有制表符124336 带有Tablock的簇加索引为空108336 群集加索引非空无选项卡锁123876 带Tablock的群集加索引不为空107924 其中一些数字似乎与technet页面上的表不匹配。特别是: 插入到空表和非空表之间的日志记录似乎没有什么区别,但是该页面声称,插入到没有制表符的非空集群中时,应该有完整的日志记录 使用tablock插入具有and index的堆或群集似乎确实减少了日志记录,但是该页面声称应该有完整的日志记录。 使用insert的SELECT INTO方法时,fn_dblog中没有要插入其操作的行,但是该页将该方法列为应具有表中所述行为的批量加载操作。 作为参考,它在SQL Express数据库上运行,当我运行DBCC TRACESTATUS(610)时,所有内容均为0。 谁能帮助解释为什么我会看到这些差异? 供参考,代码如下: SET NOCOUNT ON CREATE TABLE numbers (num INT) CREATE TABLE numbersUnordered (num INT) Declare @cnt int …

1
如何禁用匿名登录?
根据MySQL文档,您可以通过添加密码或删除匿名帐户来强化MySQL服务器。 如果要阻止客户端以没有密码的匿名用户身份进行连接,则应该为每个匿名帐户分配一个密码,或者删除这些帐户。 加固之前,我的用户表如下所示。 mysql> select user,host,password from mysql.user; +------------------+-----------+-------------------------------------------+ | user | host | password | +------------------+-----------+-------------------------------------------+ | root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX | | root | gitlab | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | gitlab …
9 mysql  security 

1
从扩展事件会话中收集参数值
我正在使用扩展事件来跟踪应用程序使用的语句。我创建了一个会话,该会话将收集所需的信息,但我也想知道所使用的参数的实际值。 我正在非生产环境中执行此跟踪,因此跟踪所导致的任何性能下降都是可以接受的。 所有查询均源自Hibernate,并已通过以下形式进行了参数化: SELECT a, b, c From Customer where CustomerId = @P0 这是我的会话设置。 CREATE EVENT SESSION [TracingForStatements] ON SERVER ADD EVENT sqlserver.sp_statement_completed ( ACTION ( sqlserver.session_id, package0.collect_system_time, sqlserver.transaction_id, package0.event_sequence ) WHERE ( sqlserver.database_id=555 ) ) ADD TARGET package0.ring_buffer(SET max_memory= 128000) WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS, MAX_DISPATCH_LATENCY = 1 SECONDS) 如何捕获捕获的语句中使用的参数的实际值?可能吗? …

1
授予SELECT用户并将其添加到db_datareader角色之间有区别吗?
我被要求为数据库中的所有表授予SELECT,INSERT并授予UPDATE给定的用户。我最终将用户添加到db_datareader,并给予他们INSERT与UPDATE在数据库级别。 但这让我思考,SELECT在数据库级别授予用户权限或将其添加到db_datareader角色之间有什么区别(如果有)?是否有任何一种最佳实践或另一种最佳实践?

1
提高SQL Server上索引重建的速度
我正在将大量数据导入到一个空数据库中,在开始之前,我禁用了所有非唯一的非聚集索引,以查看是否可以改善导入性能。 现在我想重新启用索引,我想知道是否有什么我可以做的来优化它。 有超过100个表和将近2,000个索引要重建。该数据库的大小为200GB。 我正在运行的脚本的关键部分是: declare c_toggle_index cursor FORWARD_ONLY READ_ONLY for select 'alter index ' + QUOTENAME(i.name) + ' on ' + o.name + ' rebuild' from sys.indexes as i Inner Join sys.objects o On o.object_id = i.object_id Where o.is_ms_shipped = 0 And i.index_id >= 1 and i.type > 1 and …

1
变更跟踪内部结构是否从SQL Server 2008更改为2012?
在解决与断开连接的设备与中央数据库服务器同步的问题时,在服务器上升级到SQL Server 2012之后,我们遇到了问题。看来CHANGE_TRACKING_MIN_VALID_VERSION返回的值比应有的值高1(或至少比升级前的值高)。 我一直在通过Arshad Ali的出色案例来研究如何建立一个简单的示例。 我已经从#1到#5运行脚本,以在SQL Server 2008和2012环境中在Employee表中插入,删除和更新一行。 在2008年,以下语句返回0: SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee')) 在2012年,它返回1。 在测试中通过其他几个脚本(6-8)工作时,我将保留期设置为1分钟,以期希望执行清除操作。我离开了一天,显然它跑了一整夜。 在2008年实例中,CHANGE_TRACKING_CURRENT_VERSION和CHANGE_TRACKING_MIN_VALID_VERSION相等(11)。在2012年实例中,CHANGE_TRACKING_MIN_VALID_VERSION(12)比CHANGE_TRACKING_CURRENT_VERSION(11)高一。当数据库长时间闲置时,这可能会对同步过程产生影响。而且我们发现进程可能陷入循环,尤其是在执行以下测试以确定是否需要重新初始化而不是同步的情况下: IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''... 有没有其他人经历过这种行为改变?有人解释吗?

1
无法更改Oracle的服务名称
我正在尝试更改Windows 2003服务器上Oracle 11.2.0.3安装的服务名称。 在安装过程中,服务名称是使用默认域定义的,但是我们想摆脱它。 到目前为止,我所做的事情(以及以前的工作)是将服务名称更改mydb.foo.bar为mydb仅: alter system set service_names = 'mydb' scope = both; alter database rename global_name to mydb; 这似乎奏效了: SQL>显示参数名称 名称类型值 ------------------------------------ ----------- --- --------------------------- db_name字符串mydb db_unique_name字符串mydb global_names布尔值FALSE instance_name字符串mydb service_names字符串mydb SQL> (我从上面的输出中删除了一些不相关的属性) 然后用于alter system register重新注册侦听器。 这没有效果,所以我重新启动了数据库和侦听器,仍然没有运气。 当前情况如下: select name from v$active_services 返回: SERVICE_ID | NAME | 网络名字 ----------- …

4
MYSQL错误2049(HY000):使用旧的(4.1.1之前版本)身份验证协议ref的连接(启用了客户端选项“ secure_auth”)
当我尝试将5.0版的所有数据库转储还原到5.6版时,它都还原了,此后,当我尝试重新连接时,出现以下错误 ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled).. 我尝试在My.ini中添加以下行并重新启动服务,但是问题一直持续到。 skip-grant-tables以下链接说它是MYSQL中的错误。 https://github.com/santisaez/powerstack/blob/master/packages/mysql/mysql-powerstack-secure_auth.patch 有人对此解决方案有任何修补程序吗?

2
如何确定是否将列定义为串行数据类型而不是基于目录的整数?
因此,我目前正在创建一些SQL来阅读postgres(9.1)目录以构建表定义。但是,我遇到了SERIAL / BIGSERIAL数据类型的问题。 例: CREATE TABLE cruft.temp ( id BIGSERIAL PRIMARY KEY ); SELECT * FROM information_schema.columns WHERE table_schema='cruft' AND table_name='temp'; "db","cruft","temp","id",1,"nextval('cruft.temp_id_seq'::regclass)","NO","bigint",,,64,2,0,,,,,,,,,,,,,"db","pg_catalog","int8",,,,,"1","NO","NO",,,,,,,"NEVER",,"YES" 它提供了数据库名称(db),模式名称(cruft),表名称(temp),列名称(id),默认值(nextval(...))和数据类型(bigint和int8 .. NOT bigserial)。 ...我意识到我可以检查默认值是否为序列-但我不认为这是100%准确的,因为我可以手动创建一个序列并创建一个默认值是那个顺序。 有人对我如何做到这一点有建议吗?除了检查nextval(* _ seq)的默认值之外,没有其他功能吗? 针对TL; DR或不熟悉pg_catalog的新用户在此处添加的SQL解决方案进行了编辑: with sequences as ( select oid, relname as sequencename from pg_class where relkind = 'S' ) select sch.nspname …

1
mongodb配置服务器不同步
我已经设置了2个分片,2个副本服务器和3个配置服务器以及2个mongos。我有以下问题: 1)mongo配置服务器不同步: Aug 14 09:46:48 server mongos.27017[10143]: Sun Aug 11 09:46:48.987 [CheckConfigServers] ERROR: config servers not in sync! config servers mongocfg1.testing.com:27000 and mongocfg3.testing.com:27000 differ#012chunks: "d2c08c5f1ee6048e5f6fab30e37a70f0"#011chunks: "7e643e9402ba90567ddc9388c2abdb8a"#012databases: "6f35ec52b536eee608d5bc706a72ec1e"#011databases: "6f35ec52b536eee608d5bc706a72ec1e" 2)我使用此文档来同步服务器:http : //docs.mongodb.org/manual/tutorial/replace-config-server/ 3)同步后,我重新启动了一个mongos服务器,并在日志中看到了这一点: Thu Aug 15 09:56:05.376 [mongosMain] MongoS version 2.4.4 starting: pid=1575 port=27111 64-bit host=web-inno.innologica.com (--help for usage) Thu Aug …
9 mongodb 

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.