我试图在单个归类中标准化所有数据库 – Latin1_General_CI_AS(标准归类)。 我有一些数据库在SQL_Latin1_General_CP1_CI_AS。 我知道我可以使用ALTER DATABASE来更改数据库sorting规则,但只影响新的对象。 我的理解是,改变现有列的唯一方法是在每个表中的每一列上执行ALTER COLUMN – 我需要删除并重新创build所有索引。 我想它会看起来像这样: DROP INDEX indexname ON tablename GO ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL GO CREATE CLUSTERED INDEX indexname ON tablename (columname ASC) 并重复整个数据库中的每个varchar,char,text,nvarchar,nchar和ntext列。 这将是一个巨大的 SQL脚本。 有没有更简单的方法来做到这一点,或者任何人都可以build议一种方法来自动创build一个SQL脚本来做到这一点?
我需要在所有列的所有表中执行这些语句。 alter table table_name charset=utf8; alter table table_name alter column column_name charset=utf8; 是否有可能在MySQL内部以任何方式自动化? 我宁愿避免mysqldump 更新:理查Bronosky给我看的方式:-) 我需要在每个表中执行的查询: alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 疯狂的查询来生成所有其他查询: SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname'; 我只想在一个数据库中执行它。 一次执行完成需要很长的时间。 事实certificate,它为每个表每个字段生成一个查询。 每个表只有一个查询是必要的(与救援不同)。 […]
我有一些sqlite version3的db3文件,我复制了一个实时运行的生产系统(我知道不好的sysadmin坏系统pipe理员)由于各种原因。 是否有一些sqlite命令我可以运行,将validation所有的数据可以读出这些文件(我不介意,如果需要一段时间)。 我正在考虑盗取一些转储所有数据的Perl,然后将其重新导入到新文件中。 我认为如果遇到损坏的数据,sqlite会抛出一个exception。 有没有更好的办法? 我是CentOS 5.3和sqlite-3.3.6-2
我有一个存储为MDF文件的SQL Server数据库的本地副本。 有没有办法告诉哪个版本的SQL Server被用来创build该文件?
我知道SQL喜欢RAM,但是当Windows询问时会释放它。 我知道这是SQL应该如何工作。 但是我有一个Windowspipe理员谁不相信,SQL实际上会返回内存,并且在这个特定的(虚拟)服务器上,一旦分析服务完成,SQL不需要太多,但是这个服务器上没有任何东西是困扰问SQL很多。 所以我试图向Windowspipe理员保证虚拟环境的问题不是“因为SQL使用了太多的RAM”,但是我似乎无法说服SQL在不重新启动服务的情况下释放它。 在处理多维数据集时,SQL服务高兴地需要8GB的RAM,但是由于没有压力,在正常的日子里它不会释放太多的内存。 Windows的玩家尖叫着,让SQL释放这个会更好。 我不想使用最大内存设置,因为我确实希望SQL在处理时使用那么多的RAM。 我只是想让它再次回落。 它可能是两个SQL Server不释放内存和从SQL Server回收内存的副本,但我想知道是否有不同的答案。 等待Windows收回它不会说服Windows的人在这里。 重新启动服务是一个select,但我真的不是这个想法的粉丝。 我想知道如何让Windows回来…
我知道,作为一名DBA,我真的需要担心三种分裂: 索引 SQL数据文件中的碎片,包括聚簇索引(表)碎片。 使用DBCC SHOWCONTIG(在SQL 2000中)或sys.dm_ db_ index_ physical_ stats(在2005+中)来识别此问题。 SQL日志文件中的VLF碎片 。 运行DBCC LOGINFO查看每个SQL日志文件中有多less个VLF。 硬盘上的数据库文件的物理文件碎片。 通过使用Windows中的“磁盘碎片整理程序”实用程序进行诊断。 (由这个优秀的博客文章启发) 很多关注索引碎片(请参阅Paul Randall的优秀Serverfault答案 ),所以这不是我的问题的焦点。 我知道当数据库最初是通过规划一个合理的预期数据文件和日志大小来防止物理碎片(和VLF碎片),因为这种碎片最经常发生在频繁的增长和缩小,但我有一些关于如何修复物理碎片一旦被识别: 首先,企业级SAN上的物理碎片甚至是相关的? 我可以/应该在SAN驱动器上使用Windows碎片整理程序,还是应该使用内部碎片整理实用程序? 从Windows工具获得的碎片分析是否在SAN驱动器上运行时更准确 ? SQL性能上的物理碎片有多大? (让我们假设一个内部驱动器arrays,等待前面的问题的结果。)这是一个比内部索引碎片更大的交易? 或者是真的是一个类似的问题(驱动器必须做随机读取,而不是顺序读取) 碎片整理(或重build)索引浪费时间,如果驱动器物理碎片? 在我解决其他问题之前,我需要修复吗? 在生产SQL框中修复物理文件碎片的最好方法是什么? 我知道我可以closuresSQL服务并运行Windows Defrag,但是我也听说过一种技术,在这种技术中,您可以执行完整备份,删除数据库,然后从备份恢复到空驱动器。 这是后者的技术推荐? 从这样的备份还原还从头开始build立索引,消除内部索引碎片? 还是只是将页面顺序返回到与备份时相同? (如果有问题的话,我们使用Quest Lightspeed压缩备份。) 更新 :到目前为止,是否对SAN驱动器进行碎片整理(否)以及索引碎片整理是否对物理碎片驱动器仍然值得(YES)的回答是很好的答案。 任何人都在考虑权衡实际进行碎片整理的最佳方法吗? 或者估计你想要花费的时间来碎片化一个大型的驱动器,比如500GB左右? 相关的,显然,因为那是我的SQL服务器将closures的时间! 另外,如果有人对SQL性能改进有任何轶事的信息,那么通过修复物理碎片就可以提高性能,那也是很好的。 迈克的博客文章谈到揭露这个问题,但没有具体说明它做了什么样的改进。
https://stackoverflow.com/questions/510170/the-difference-between-the-local-system-account-and-the-network-service-accou讲述: 本地系统:完全信任的帐户,比pipe理员帐户更重要。 这个账户不能做任何事情, 它有权访问networking作为机器(这需要Active Directory和授予机器账户权限)“ http://msdn.microsoft.com/en-us/library/aa274606 (SQL.80) .aspx (准备安装SQL Server 2000(64位) – 创buildWindows服务帐户)告诉: “ 本地系统帐户不需要密码, 没有networking访问权限,并且限制了SQL Server安装与其他服务器的交互。 ” http://msdn.microsoft.com/en-us/library/ms684190(v=VS.85).aspx(LocalSystem帐户,生成date:8/5/2010)告诉: “ LocalSystem帐户是服务控制pipe理器使用的预定义本地帐户,该帐户不被安全子系统识别 ,因此您不能在对LookupAccountName函数的调用中指定其名称,它在本地计算机上拥有广泛的权限,作为networking上的计算机, 它的令牌包括NT AUTHORITY \ SYSTEM和BUILTIN \ Administrators SID ;这些帐户可以访问大多数系统对象,所有区域设置中的帐户名称是\ LocalSystem ,名称LocalSystem或ComputerName \ LocalSystem也可以使用这个账户没有密码如果你在CreateService函数的调用中指定了LocalSystem账户,你提供的任何密码信息将被忽略“ http://technet.microsoft.com/en-us/library/ms143504.aspx (设置Windows服务帐户)告诉: 本地系统是一个非常高权限的内置帐户。 它在本地系统上拥有广泛的权限,充当networking上的计算机。 >帐户的实际名称是“NT AUTHORITY \ SYSTEM”。 Windows操作系统中的众所周知的安全标识符( http://support.microsoft.com/kb/243330 )根本没有任何SYSTEM (但只有“ 本地系统 ”) 我的Windows XP专业版SP3 ( MS SQL Server设置,在工作组中开发机器)确实有系统,但不是本地系统或“ 本地系统 […]
在使用SQL Server 2008 Express时,您会推荐哪些备份解决scheme? 我对SQL Server相当陌生,但是因为我是从MySQL背景来的,所以我想在另一台计算机上设置复制,然后只需要对该服务器进行Xcopy备份。 但遗憾的是复制在Express Edition中不可用。 该网站是大量访问,所以不得不有延迟和停机时间。 我也在考虑每天做两次备份。 你会推荐什么? 我有多台电脑可以使用,但是我不知道是否可以帮助我,因为我使用的是Express版本。
可能重复: 我的服务器被黑了应急 Geeze,我很绝望! 几个小时前我们的生产数据库是SQL注入。 我知道我们在系统中有一些大的漏洞,因为我们inheritance了一个经典的ASP的网站,他的编程非常糟糕,没有安全感。 所以我们花了一些时间把它迁移到ASP.NET(第一个1.1,然后是2.0,现在是3.5)。 但是这是一个很大的项目,还有一些老的和不安全的代码。 我不会说谎,项目是一团糟,我讨厌它,但这是我们最重要的客户(我们只有2个年轻人,而不是一个大公司)。 所以我知道他们已经注入了一些js脚本引用到我的整个数据库……这可能是通过一个旧的页面使用连接的stringSQL查询,并直接扔到数据库(因为启动该项目的人说:“存储过程doesn不工作“…..所以他做了整个网站使用string连接,并直接扔到SQL没有做任何安全validation或任何东西。 当我们得到这个项目时,客户不想花时间重做那个老家伙的废话。 所以我们不得不导致蹩脚的和不安全的代码,并在开发新function时修复它,因为这是客户想要的…现在我们已经注入了sql,他们当然会变得疯狂。 所以…. **是否有任何方法来检查在过去的X小时内执行的旧的SQL查询? 就像SQL Profiler所做的那样(但当然我们没有在发生攻击时打开剖析器)? 有没有办法找出哪个页面是脆弱的? 请帮忙,有很多页面。 我不能手动search那些不知道哪一个是页面。 另外…可以有另一种方式,他们可以注入数据库? 像使用IIS请求或JS或什么?** 我有完整的远程桌面访问服务器的机器(它不是在托pipe环境),所以我可以访问每个文件,日志,无论在服务器上… 请帮忙! PS:对不起,我的英文不是很好,现在更糟的是我很紧张! 编辑 Windows 2003 Server SQL SERVER 2005 ASP .NET 3.5 他们正在投掷的脚本是以下 DECLARE @S NVARCHAR(4000);SET @S=CAST( AS NVARCHAR(4000));EXEC @S; 翻译成文本的是: DECLARE @T varchar(255), @C varchar(255) DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects […]
在SQL Server 2005/2008中,如何判断快照隔离是否已打开? 我知道如何打开它,但我无法find让谷歌告诉我如何查询快照隔离选项状态的咒语。