IBM DB2的自动增量列面临一些麻烦。 起初,我的所有列被定义为GENERATED ALWAYS ,但是由于我在使用“db2 import …”命令时遇到了麻烦,所以我将它们更改为GENERATED BY DEFAULT 。 这是必要的,因为我需要ID是一致的,因为其他表引用它们。 所以使用“db2 import …被identityignore修改…”不是一个选项。 当我现在导入数据时,ID被正确插入,但每次我这样做的时候,我都必须记住通过获得最高的Id + 1来设置自动增量列的新开始,并像这样改变列: SELECT MAX(mycolumn)+ 1 FROM mytable; ALTER TABLE mytable ALTER COLUMN mycolumn RESTART WITH <above_result>; 如果我忘记了这一点,一个插入语句将失败并出现重复的PK错误,因为自动增加列是主键。 所以我的问题是:有没有办法find一个自动增量列的下一个值,所以我可以编写语句来检查,如果这个值小于SELECT MAX并且需要设置? 或者:这不是像我看起来那么复杂吗? 我可以以某种方式导入数据,保留ID和自动增量列仍按预期工作?
看到testing服务器将tempdb日志文件增长到8 GB,在负载testing的几个小时内分配的12 GB内使用。 tempdb数据文件几乎没有文件空间使用情况。 在tempdb中运行DBCC OPENTRAN,几秒钟内没有打开的事务。 我正在运行SQL Server 2005,读快照隔离已closures。 我怎样才能确定什么是消费tempdb日志?
有没有人知道与sqlserver的phpmyadmin类似的工具? 特别是数据转储非常方便。 而且更新等,而不需要远程login等是很好的。
我们正在运行SQL Server 2000.在我们的数据库中,我们有一个“订单”表,大约有750,000行。 我们可以在这个表上执行简单的SELECT语句。 但是,当我们想运行SELECT TOP 100 * FROM Orders BY Date_Ordered DESC这样的查询时,我们会收到以下消息: 错误:9002,严重性:17,状态:6数据库“tempdb”的日志文件已满。 备份数据库的事务日志以释放一些日志空间。 我们的数据库中有其他表格(即700,000条logging)的logging数量相似。 在这些表上,我们可以运行任何我们想要的查询,而且我们永远不会收到“tempdb正在满”的消息。 为了解决这个问题,我们已经备份了我们的数据库,收缩了实际的数据库,并将数据库和文件收缩到tempdb系统数据库中,但是这并没有解决问题。 我们的日志文件的大小设置为自动增长。 我们不确定下一步该去哪里。 有什么想法,为什么我们仍然可能收到这个消息? 错误:9002,严重性:17,状态:6数据库“tempdb”的日志文件已满。 备份数据库的事务日志以释放一些日志空间。
我有一个生产服务器,用于MS SQL Server数据库。 机器规格为: – 带有(EM64T)的Intel Xeon E5410 CPU – 4 GB RAM – RAID模式下的SCSI HDD 它目前有: – Windows Server 2003 R2企业版Service Pack 2(32位) – SQL Server 2005(9.0.3080)(32位)作为默认实例。 – SQL Server 2008(10.0.1600)(32位)作为命名实例“SQL2008”。 我需要将SQL Server 2008实例升级到64位。 我该怎么做呢? 我知道OS也需要是64位模式。 我可以先升级到Windows Server 2008 R2 64位的Windows吗?
我有一个数据库,XYZ,有一个损坏的日志文件,现在由于日志文件是完全不可用这是呈现此特定的数据库不可用,我需要能够重build它。 我已经对这个过程进行了大量的研究,但是却陷入了dbcc checkdb。 我跑了命令 alter database xyz SET single_user with immediate rollback 随后 use master dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS) 但是我一直在遇到这个错误: Msg 924, Level 14, State 1, Line 2 Database 'XYZ' is already open and can only have one user at a time. 我所研究的一切都表明,数据库需要处于紧急模式,然后该数据库需要处于单用户模式。 如果我将DB恢复为多用户模式,则表示DB需要处于单用户模式。 好吧,我这样做,然后得到这个问题。 我跑了 select spid from master..sysprocesses where dbid = DB_ID('XYZ') and spid <> […]
一位同事已经重新命名了一个SQL服务器,但是所有的维护计划仍然将“OLD_NAME”引用为“本地服务器连接”。 包含本地服务器连接的服务器名称的文本框呈灰色,无法更改 有没有办法改变这些值,出口所有的SSIS包,在Visual Studio中更改并重新添加它们呢?
我有一台x64机器,经常需要在SQL Server客户端networking实用程序(cliconfig)中更改registry的x64和x86端的大约10个别名。 有没有办法我可以用PowerShell脚本来做到这一点?
我有一张桌子,即使没有行,也占用了相当多的空间。 我前一阵子也放弃了。 当我尝试放弃它时,它表示该表不存在。 它显示在user_tables中。 此外,它的所有分区和索引都显示在user_objects中。 它也不在回收站中。 这里发生了什么? 编辑: 这是user_tables的结果: TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME STATUS PCT_FREE PCT_USED INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS LOGGING BACKED_UP NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE INSTANCES CACHE TABLE_LOCK SAMPLE_SIZE LAST_ANALYZED PARTITIONED IOT_TYPE TEMPORARY SECONDARY NESTED BUFFER_POOL ROW_MOVEMENT GLOBAL_STATS USER_STATS DURATION SKIP_CORRUPT MONITORING CLUSTER_OWNER DEPENDENCIES […]
我有一个非常特殊的情况,我已经做了好几天了。 我有一个非常大的SQL Server 2008数据库(约2 TB),其中包含500个文件组以支持非常大的分区表。 最近我们在一个驱动器上发生了一次灾难性的失败,丢失了几个文件组,数据库变得无法访问。 我们每天都在进行文件组备份,但由于其他问题,我们丢失了日志和主文件组的最新备份。 我们备份了所有数据,但主文件组备份已旧。 自主文件组备份以来,没有任何模式更改,但lsn现在全部不同步,我们无法恢复数据。 我已经尝试了所有我能想到的(并且已经尝试了几乎所有的技巧,而且我可以google),但是我仍然得到同样的信息,说明文件组x的文件与主文件组不匹配。 我现在正试图编辑系统表(我们有一个单独的临时环境来做到这一点,所以我们不担心会破坏任何生产数据库)。 我已经尝试更新sys.sysdbreg,sys.sysbrickfiles和sys.sysprufiles,试图欺骗SQL,认为所有的文件都在线,但“select*从OPENROWSET(TABLE DBPROP,5)”显示不同的数据库状态我在sys.sysdbreg中看到。 我现在想我需要以某种方式编辑实际数据文件的头文件,以尝试将lsn与主文件alignment。 我很欣赏任何人可以在这里给我的帮助,但请不要用“你不应该编辑mdf,ndf文件….”或“看到MSDN文章….”等等这样的回应。一个先进的紧急情况,我需要一个真正的黑客,所以我们可以得到在这个损坏的数据库中的数据,并导出到一个新的数据库。 我知道有一种方法可以做到这一点,但不知道DBPROP系统函数做了什么(例如看系统表还是实际打开文件),使我无法想出如何愚弄SQL让我阅读这些文件。 谢谢你的帮助。