我varchar在 SQL Server 的表中有一个列,其中包含一个 base64 编码的文本字符串,我想将其解码为纯文本等效项
SQL Server 是否具有处理此类事情的任何本机功能?
一个示例 base64 字符串:
cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==
Run Code Online (Sandbox Code Playgroud)
解码为:
role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764
Run Code Online (Sandbox Code Playgroud) sql-server t-sql sql-server-2008-r2 cast string-manipulation
在 SSMS 中创建表时,我意识到如果执行以下语句:
CREATE TABLE [tableName];
Run Code Online (Sandbox Code Playgroud)
该表将在您自己的架构(而不是 dbo)下创建。因此,为了在 dbo 模式下创建它,您需要明确说明,如下所示:
CREATE TABLE [dbo].[tableName];
Run Code Online (Sandbox Code Playgroud)
有谁知道一种方法(例如服务器范围的设置),以便在创建表时不需要指定 [dbo] 部分?
我想使用我在 C# CLR 中开发的代码在系统上的所有数据库中使用,这样我就不必将每个数据库都设置为可信赖的并打开 CLR 并在每个数据库中保留一堆相同的代码.
从管理和安全的角度来看,有没有最好的方法来做到这一点?CLR 函数非常基础,如字符串断路器、电子邮件验证、url 编码/解码、base64 等。我希望每个数据库中只有 dbo 模式能够访问这些函数。
谢谢
我一直在通过 sql server 2008 r2 中的数据收集器监视文件增长两周。数据库以大约 35(MB)/天的速度持续增长。数据库尚未达到 2 GB 的初始大小。
DB 文件自动增长设置为 5MB,我想尝试不同的方法,所以我正在寻找建议和/或评论。
每周周日晚上 1:30 有一项调整任务运行。该任务将:
我想在每周调整计划中再添加两个步骤:
通过将增长负担置于离线时间,我希望通过减少重负载期间自动增长事件的数量来提高性能。
我有两个关于自动增长文件的问题。
ALTER DATABASE|MODIFY FILE来增长文件,那么我如何确定SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)?sql-server-2008 sql-server best-practices sql-server-2008-r2 transaction-log
我正在尝试自动执行对 SQL Server 2008 R2 数据库执行更改的过程。我实施的流程删除并重新创建了我的存储过程和函数,以及运行脚本来更改表/列/数据。不幸的是,其中一个脚本需要首先放置其中一个函数。但是我不能先运行所有存储的过程/函数更改,因为它首先依赖于从表/列/数据更改脚本中添加的列。
我想知道是否可以在没有 SQL Server 验证函数/SP 定义中使用的列的情况下运行存储过程和函数?我尝试查找但找不到启用此功能的条件或命令。
sql-server stored-procedures sql-server-2008-r2 ddl functions
该EXCEPT运营商已在SQL Server 2005中引入的,但之间有什么区别NOT IN和EXCEPT?
它也这样做吗?我想用一个例子做一个简单的解释。
sql-server-2005 sql-server sql-server-2008-r2 operator except
我试图理解为什么使用表变量会阻止优化器使用索引查找然后书签查找与索引扫描。
填充表:
CREATE TABLE dbo.Test
(
RowKey INT NOT NULL PRIMARY KEY,
SecondColumn CHAR(1) NOT NULL DEFAULT 'x',
ForeignKey INT NOT NULL
)
INSERT dbo.Test
(
RowKey,
ForeignKey
)
SELECT TOP 1000000
ROW_NUMBER() OVER (ORDER BY (SELECT 0)),
ABS(CHECKSUM(NEWID()) % 10)
FROM sys.all_objects s1
CROSS JOIN sys.all_objects s2
CREATE INDEX ix_Test_1 ON dbo.Test (ForeignKey)
Run Code Online (Sandbox Code Playgroud)
使用单个记录填充表变量,并尝试通过搜索外键列来查找主键和第二列:
DECLARE @Keys TABLE (RowKey INT NOT NULL)
INSERT @Keys (RowKey) VALUES (10)
SELECT
t.RowKey,
t.SecondColumn
FROM
dbo.Test t
INNER JOIN
@Keys k
ON
t.ForeignKey = …Run Code Online (Sandbox Code Playgroud) sql-server optimization sql-server-2008-r2 user-defined-table-type bookmark-lookup
我最近在新的开发机器上安装 Visual Studio 2012 和 SQL Server 2008 R2 时遇到了问题。我的安装顺序是 Visual Studio 2012 然后安装 SQL Server 2008 R2。
SQL Server 安装过程中出现错误:
指定的帐户已存在。
我花了一天的时间试图解决这个问题。
我已将数据库排序规则设置为Latin1_General_BIN, 以使字符串比较区分大小写。这会影响性能吗?对数据库中的 DML 或 DDL 操作有什么影响吗?数据库已存在,其中包含表。
performance sql-server collation sql-server-2008-r2 unicode performance-tuning
认为这已通过以下链接解决 - 解决方法有效 - 但补丁没有。与 Microsoft 支持一起解决。
http://support.microsoft.com/kb/2606883
好的,所以我有一个问题,我想把它扔给 StackOverflow,看看是否有人有想法。
请注意,这是 SQL Server 2008 R2
问题:启用触发器时,从包含 15000 条记录的表中删除 3000 条记录需要 3-4 分钟,禁用触发器时只需 3-5 秒。
表设置
我们将称为 Main 和 Secondary 的两个表。Secondary 包含我要删除的项目记录,因此当我执行删除操作时,我会加入到 Secondary 表中。在删除语句之前运行一个进程,以使用要删除的记录填充辅助表。
删除声明:
DELETE FROM MAIN
WHERE ID IN (
SELECT Secondary.ValueInt1
FROM Secondary
WHERE SECONDARY.GUID = '9FFD2C8DD3864EA7B78DA22B2ED572D7'
);
Run Code Online (Sandbox Code Playgroud)
这个表有很多列和大约 14 个不同的 NC 索引。在我确定触发器是问题之前,我尝试了很多不同的事情。
触发器
该表有 3 个触发器(插入、更新和删除操作各一个)。我修改了删除触发器的代码以使其返回,然后选择一个以查看它被触发了多少次。它在整个操作过程中只触发一次(如预期的那样)。
ALTER TRIGGER [dbo].[TR_MAIN_RD] ON [dbo].[MAIN]
AFTER DELETE
AS
SELECT 1
RETURN
Run Code Online (Sandbox Code Playgroud)
回顾
sql-server ×10
performance ×2
c# ×1
cast ×1
collation ×1
ddl ×1
delete ×1
except ×1
functions ×1
installation ×1
operator ×1
optimization ×1
sql-clr ×1
t-sql ×1
trigger ×1
unicode ×1