小编8kb*_*8kb的帖子

如何使用Powershell Where-Object就像一个IN语句

我有以下代码可行:

foreach ($db in $svr.Databases | 
         where-object {
         $_.name -eq "testDB" 
         -or $_.name -eq "master"
         -or $_.name -eq "model"
         -or $_.name -eq "msdb" } )
{
  write-output $db.name
}
Run Code Online (Sandbox Code Playgroud)

这是一个更干净的方法吗?

就像是:

foreach ($db in $svr.Databases | 
         where-object {$_.name -in "testDB, master, model, msdb" } )    
{
  write-output $db.name
}
Run Code Online (Sandbox Code Playgroud)

sql-server powershell smo

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

GUID:varchar(36)与uniqueidentifier

我正在使用遗留数据库将GUID值存储为varchar(36)数据类型:

CREATE TABLE T_Rows (
    RowID    VARCHAR(36) NOT NULL PRIMARY KEY,
    RowValue INT         NOT NULL
) 

INSERT T_Rows (RowID, RowValue) VALUES (NEWID(), 1)
Run Code Online (Sandbox Code Playgroud)

我认为将GUID存储为唯一标识符会更好,因为它只有16个字节而不是36个字节.

将GUID存储为varchar有什么好处吗?

sql-server performance database-design guid sql-server-2008

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

选择/插入Upsert的版本:是否有高并发的设计模式?

我想做一个UPSERT的SELECT/INSERT版本.以下是现有代码的模板:

// CREATE TABLE Table (RowID INT NOT NULL IDENTITY(1,1), RowValue VARCHAR(50))

IF NOT EXISTS (SELECT * FROM Table WHERE RowValue = @VALUE)
BEGIN
   INSERT Table VALUES (@Value)
   SELECT @id = SCOPEIDENTITY()
END
ELSE
   SELECT @id = RowID FROM Table WHERE RowValue = @VALUE)
Run Code Online (Sandbox Code Playgroud)

将从许多并发会话中调用该查询.我的性能测试表明它会在特定负载下持续抛出主键违规.

是否有一种高并发方法可以使此查询保持性能,同时仍然避免插入已存在的数据?

t-sql sql-server concurrency design-patterns sql-server-2008

11
推荐指数
1
解决办法
3374
查看次数

您可以通过堆叠数据库来绕过SQL Server Express的大小限制吗?

我的公司正在使用SQL Server 2008 Express开发一个开发项目.我们计划在主表中存储的数据量将快速超过Express的4GB大小限制.我们可以用SQL Server 2008 R2购买自己一段时间,但最终我们也将超过10GB的限制.

在购买标准版许可证之前,团队负责人希望听取所有可用选项.我们公司的专业知识是SQL Server和Oracle,因此使用MySQL或PostgresSQL将被视为最后的手段.

我能想到的唯一选择是将主表水平划分为独立的不同数据库的设计.此外,还有一个中央数据库来存储有关数据存储位置的信息.

例如,2008的所有表数据将存储在DB_2008中,DB_2009中的2009数据中,依此类推.元数据表可能如下所示:

PKStartDate  PKEndDate   DBName
-----------  ----------  ----------
2008-01-01   2008-12-31  DB_2008
2009-01-01   2009-12-31  DB_2009
2010-01-01   2010-12-31  DB_2010
Run Code Online (Sandbox Code Playgroud)

此表将用于确定存储过程的数据的数据库位置.我们的大多数代码已经使用参数化的动态SQL,因此实现起来并不困难.

有没有人曾经这样做过?

这种类型的设计是否有既定的模型,还是只是一个可怕的想法?

sql t-sql database sql-server database-design

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