小编jco*_*and的帖子

能否在 SQL Server 2008(或 R2)上禁用 Windows 身份验证登录?

所以我们可以使用 Windows 登录或混合模式,但是我们可以将 SQL Server 配置为仅使用内部登录并阻止所有 Windows 登录吗?

作为预防性(或反应性)过程添加所有潜在的 Windows 登录并将其设置为受限权限的唯一解决方案是什么?

sql-server-2008 security sql-server

8
推荐指数
2
解决办法
8440
查看次数

生成脚本以自动重命名默认约束

背景:我们的一些默认列约束是在没有明确名称的情况下生成的,因此我们得到了因服务器而异的有趣名称,例如: DF__User__TimeZoneIn__5C4D869D

我希望它们都可以使用一致的命名进行管理,DF_Users_TimeZoneInfo这样我们就可以确保未来的目标表存在适当的约束(比如在 RedGate 比较中,甚至只是在视觉上)

我有一个主要适用于我想要的脚本:

select 'sp_rename N''[' + s.name + '].[' + d.name + ']'', 
   N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';'
from sys.tables t
    join
    sys.default_constraints d
        on d.parent_object_id = t.object_id
    join
    sys.columns c
        on c.object_id = t.object_id
        and c.column_id = d.parent_column_id
    join sys.schemas s
        on t.schema_id = s.schema_id
WHERE d.NAME like 'DF[_][_]%'
Run Code Online (Sandbox Code Playgroud)

但这只是给了我一个结果集,而不是我实际上可以传递给 exec 或其他任何东西的东西。

我怎样才能做到这一点,以便我可以只执行这些sp_rename脚本,而不必求助于复制所有返回的元素并将它们粘贴到新的查询窗口中并再次运行它们?尝试尽可能多地保存击键,以便我可以在许多环境中纠正此问题。

在此处输入图片说明

sql-server dynamic-sql sql-server-2008-r2

8
推荐指数
1
解决办法
5309
查看次数

多次 CREATE 和 DROP #SomeTable 是否“合法”?

我已经将我的代码分类为“连贯块”,我可以一遍又一遍地将其插入到更长的“配置脚本”中,我正在使用的模式之一是:

CREATE TABLE #WidgetSetting 
(
    WidgetID bigint not null,
    Name nvarchar(100) not null,
    Value nvarchar(max) not null,
    CreateDate datetime not null
)

INSERT VALUES

MERGE TABLES

DROP TABLE #WidgetSetting
Run Code Online (Sandbox Code Playgroud)

但是现在 SSMS 抱怨该对象在下次CREATE TABLE火灾时已经存在。是什么赋予了?

我认为很明显我将不得不在脚本的开头声明一次表,截断而不是删除,但很自然地,无法删除表并再次使用相同的名称。

sql-server ssms t-sql sql-server-2008-r2

8
推荐指数
1
解决办法
469
查看次数

SQL Server 2008 日志文件具有最小大小,是什么使它们变小以及如何使它们变小?

好的,首先,我在创建数据库时搞砸了,使用的创建脚本大致如下:(用于包装目的的人工换行符和名称/路径)

CREATE DATABASE [EXAMPLE] ON  PRIMARY 
( NAME = N'EXAMPLE_Data', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.mdf', 
    SIZE = 446046KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
 LOG ON 
( NAME = N'EXAMPLE_Log', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.ldf', 
    SIZE = 664505KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
Run Code Online (Sandbox Code Playgroud)

因为我从现有的开发数据库中编写了它的脚本,我只是想让一些事情发生。当我没有将大小更改为合理的大小(例如4096KB)时,我搞砸了,所以现在我无法将日志文件缩小到大约 600MB 以下。

我知道我哪里出错了,但是如何轻松修复它?

sql-server-2008 sql-server shrink logs

7
推荐指数
2
解决办法
8052
查看次数

在单个存储过程中返回多个聚合的最有效方法?

获得多个聚合结果值的最佳或最有效方法是什么?

基本上,我有一个电子邮件应用程序,想要获取每种类型的文件夹(收件箱、已发送、已存档、已标记...)的所有邮件数量,如下定义。

这是我在一个存储过程调用中尝试做的事情的示例。(其中 [uid] 是用户 ID)

SELECT * FROM Message
Inbox    WHERE [to]    = [uid] 
Unread    WHERE [to]    = [uid] and isread = 0
Flagged    WHERE [to]    = [uid] and isFlagged = 1
Drafts    WHERE [to]    = [uid] and isDraft = 1
Sent Messages    WHERE [from] = [uid]
Archived Messages    WHERE [to]     = [uid] and isArchived = 1
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 stored-procedures aggregate

7
推荐指数
1
解决办法
767
查看次数

MySQL 连接不再起作用

我有两个 MySQL 服务器在运行(127.0.0.1:3306 和 127.0.0.1:3307)。现在我收到这个奇怪的错误:mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet'我可以连接localhost:3307,但没有任何表/数据库。我很确定/etc/my.cnf是对的:

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = ***

[mysqld]
port       = 3306
socket   = /var/run/mysql/mysql.sock

[mysqld2]
port       = 3307
socket   = /var/run/mysql/mysql2.sock
Run Code Online (Sandbox Code Playgroud)

我现在能做什么?我怎样才能理智地重新启动 MySQL 服务器?

也许更重要的是:

如何确保所有表仍然存在?

mysql php

7
推荐指数
1
解决办法
2530
查看次数

在 SQLite 上写入一行需要多少次磁盘搜索?

据我所知,硬盘每旋转一圈可以有一次磁盘搜索,因此我很想知道将一行写入 SQLite 表需要多少磁盘搜索,包括锁定等。假设没有索引在桌子上(甚至不是主键)。我假设有一个磁盘试图将一行写入文件?如您所知,我想将性能与将相同数据写入平面文件进行比较。

sqlite csv

7
推荐指数
1
解决办法
389
查看次数

SQL Server:当一个进程阻塞另一个进程时应该怎么做?

我是一个偶然的 DBA 并且仍在学习。

当我从 DMV:s 或 Activity Monitor 看到某个进程正在阻塞另一个进程时,应该怎么做?

我应该简单地终止这些进程还是有办法“释放”或者抢占这种阻塞?

sql-server locking

7
推荐指数
2
解决办法
3012
查看次数

NuoDB 和 MySQL 之间的主要区别是什么?

既然 NuoDB 可以作为 MySQL 的存储引擎,那么使用 NuoDB 作为服务器和使用 MySQL 作为服务器的主要区别是什么?

另外,最近我收到了一个关于这个新的 sql 数据库的推荐,它看起来打算成为更灵活的场景、云等的一个很好的解决方案。 问题是我找不到任何关于真实测试的信息或任何与其他数据库系统。我不确定它与 MySQL 的现有用途有何不同,以及在用作独立数据库服务器时它与 MySQL 有何不同。

mysql

7
推荐指数
1
解决办法
5312
查看次数

Right Join vs Left Join - 我的连接坏了,我不明白为什么

http://sqlfiddle.com/#!3/ef71e/1

我相当彻底地减少了小提琴,但我认为意图很明显[Def]是一个[DefaultClassification]表,[Cls]是一个[Classification]包含一些需要添加的旧记录的表。 DefaultClassification 表将在将来用于将新的记录组生成到另一个表中,我们正在“破坏”现有的位这个过程的逻辑/数据。

我尽我最大的努力将整个事情提炼成最基本的要素,但我还有另一个类似的过程在这个过程之后运行,所以我希望学习最佳实践以及为什么这个查询被破坏。

当我写这篇文章时,我打算让它在 2008 年以上的环境中运行,在 SSMS 中编写脚本或手动运行。我不知道它不会被脚本化,但它可能会。现在它完全是手工运行的。最后打印消息上方的回滚和选择是因为它不能正常工作,所以这让我在提交之前验证它。我更喜欢一个有效的脚本,我不必乱用,但是

我遇到的具体问题是该修订版链接http://sqlfiddle.com/#!3/ef71e/1 的第 62 行,它看起来像这样:

右外连接 [Def] tcd

如果我将右侧翻转到左侧,它会执行插入但不检测重复项(以防止插入),如果我执行右侧操作,它会检测重复项但不处理插入。

我打破了什么?为什么?


有人告诉我使用了@@ERROR不好的 juju,但我不知道为什么,所以这个解释也有奖励积分(100 代表赏金)。

sql-server-2008

7
推荐指数
1
解决办法
557
查看次数