小编Sky*_*Sky的帖子

SQL Server 中的数据混淆

SQL Server 中数据混淆的最佳实践是什么?

我们想在我们的 UAT 系统中使用屏蔽的生产数据。

如果我们想快速完成,并且混淆程度更高,应该采取什么方法?我正在考虑角色争夺人们的名字和姓氏,但如何?我应该自己创建一个函数还是有任何可用的预定义函数?我不想花时间重新发明轮子:)

日期字段怎么样?例如,是否应该从整个表中随机选择出生日期并分配给记录,或者有更好的方法吗?

sql-server sql-server-2008-r2

47
推荐指数
3
解决办法
3万
查看次数

将选择结果写入 csv 文件

我们需要将 SELECT 查询结果写入一个 csv 文件。如何在 SQL Server 2008 r2 中使用 T-SQL 来完成?我知道它可以在 SSIS 中完成,但由于某些原因,我们没有这个选项。

我尝试使用下面文章中建议的 proc,但是当我运行该 proc 时,SQL 抱怨无法运行在此 proc 中调用的 sys.sp_OACreate 和 sys.sp_OADestroy。

您知道我们如何打开这些组件或知道使用 T-SQL 写入文件的更好方法吗?

提前致谢。

sql-server-2008 t-sql

44
推荐指数
5
解决办法
30万
查看次数

在 HashBytes 函数中选择正确的算法

我们需要创建 nvarchar 数据的哈希值以进行比较。T-SQL 中有多种哈希算法可用,但在这种情况下,最好选择哪一种?

我们希望确保两个不同的 nvarchar 值具有重复哈希值的风险最小。根据我对互联网的研究,MD5 似乎是最好的。那正确吗?MSDN 告诉我们(下面的链接)有关可用算法的信息,但没有说明哪一种适用于什么条件?

哈希字节 (Transact-SQL)

我们需要在两个 nvarchar(max) 列上连接两个表。可以想象,执行查询需要很长时间。我们认为最好保留每个 nvarchar(max) 数据的散列值并对散列值进行连接,而不是 nvarchar(max) 值是 blob。问题是哪种哈希算法提供了唯一性,这样我们就不会遇到一个哈希值对应多个 nvarchar(max) 的风险。

sql-server t-sql sql-server-2008-r2 hashing

22
推荐指数
2
解决办法
2万
查看次数

列出现有的 SQL Server 登录名和用户

我知道我们可以使用 SQL Server 中的 GUI 检查登录名和定义的用户,但我想知道如何使用脚本进行此检查。

我运行了下面的查询,但它显示了 Principal_id,我不确定如何映射以获得权限级别。

SELECT * FROM Sys.login_token 
Run Code Online (Sandbox Code Playgroud)

那么是否有任何内置的存储过程可以列出登录名和具有权限级别的用户?

谢谢你。

sql-server-2008 security sql-server

14
推荐指数
2
解决办法
16万
查看次数

表中列的顺序

从我目前所见,当我们定义一个表时,通常我们将主键作为第一列。如果存在所有表中通用的杂项列,则它们位于表定义的底部。例如:Id(pk)第一列和 IsActive 和底部的时间戳。

我想知道除了跨数据库的一致性之外,这种做法是否还有更多好处。列的顺序是否会影响性能?如何?我需要在团队中证明我的观点,即在表中随机放置主键和公共键(例如 IsActive(布尔列显示记录是否处于活动状态))不是一个好习惯!

开发人员在 Visual Studio 2010 中的实体模型中创建实体,如果他们向现有实体添加新属性,显然 VS 没有将它们按正确顺序排列。这是他们忽略表中列顺序的借口。它会影响性能吗?

我很欣赏你的想法。

performance sql-server-2008

14
推荐指数
2
解决办法
1264
查看次数

在另一个作业中调用 SQL Server 作业

是否可以调用 SQL Server 作业在另一个作业中运行?

我知道我们可以将作业 1 的所有步骤添加到作业 2,但我不想这样做。首先,作业 2 已经很大,其次我找不到复制粘贴选项来在作业之间复制步骤,因此手动添加步骤会很耗时。

任何建议表示赞赏。

sql-server-2008-r2 jobs

12
推荐指数
3
解决办法
4万
查看次数

SQL Server 作业中的事务和 Try-catch

我们在 SQL Server 作业的每个步骤中都有 DML 操作。为确保更新/插入在出现问题时回滚,我将每个步骤的数据修改包装在TRY CATCHTRANSACTION块中:

BEGIN TRY
    BEGIN TRANSACTION

        [[INSERT/update statements]] ...

    IF @@TRANCOUNT > 0
    BEGIN
        COMMIT TRANSACTION
        PRINT 'Successful.'
    END

END TRY

BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage

    IF @@TRANCOUNT > 0
    BEGIN
        ROLLBACK TRANSACTION
        PRINT 'Unsuccessful.'
    END
END CATCH
Run Code Online (Sandbox Code Playgroud)

它是否确保在出现错误时回滚数据操作?还是应该考虑其他因素?

有没有更好的方法来做到这一点(使用配置等)?

谢谢你。

sql-server sql-server-2008-r2 transaction jobs

9
推荐指数
1
解决办法
1万
查看次数

没有数据显示时如何保持Tablix的结构

我们有一个 SSRS 报告,它在 tablix 中显示数据集的结果。如果数据集中的查询未返回任何数据,则会显示 Tablix 的标题,但不会显示标题下方的 Tablix 单元格。我知道有一个属性 to NoRowMessage,但实际上它不是我们想要的。因为当我指定一条消息时,SSRS 显示消息而不是空的 tablix。我必须按原样显示 tablix 结构,但带有空单元格。

我什IsNothing至使用函数为 tablix 的每个单元格值设置规则,如果值为空,则显示空白(“”),但没有帮助。

你有什么主意吗?提前感谢您的帮助。

ssrs sql-server-2008-r2

9
推荐指数
1
解决办法
3万
查看次数

开发完成后重命名表的最佳方法

在 SQL Server 2008 r2 中重命名数据库表和列的最简单和最可靠的方法是什么?我们已经完成了开发,由于某些原因,我们需要重命名一些表和一些列。

使用同义词是这样做的好方法吗?我们应该为哪些陷阱做好准备?它是否也有助于优雅地重命名列?

我们有很多与这些表相关的脚本,它们也被 .net 开发人员在应用程序中引用。

sql-server-2008-r2

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

如何授予用户 UNSAFE ASSEMBLY 权限

我们如何分配用户,例如:数据库所有者(DBO)UNSAFE ASSEMBLY 权限?

我要求它使用户能够创建程序集但不知道 SA 密码,因此无能为力EXEC sp_changedbowner ‘sa’

任何的想法?

谢谢你。

sql-server permissions sql-server-2008-r2 sql-clr

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