小编Glo*_*del的帖子

缺少 SQLCMD 的相对路径功能有哪些解决方法:r?

我不是第一个注意到缺少此功能的人

但我想知道是否有一些有用的解决方法。我想在同一个文件夹中部署一个主脚本和一些依赖脚本。

顺便说一句,Microsoft Connect 上有票吗?

编辑:

锁定于此,似乎等同于在 sqlcmd 模式下运行的脚本是否可以确定其在文件系统中的路径的问题。

第二次编辑:

SO我找到了一种将脚本路径传递到 sqlcmd 的方法

sqlcmd -S myServer -d myDB -U user -P password -i file1.sql -v p1="D:\myscripts" 
Run Code Online (Sandbox Code Playgroud)

我可以验证它是否传递给 File1.sql

PRINT '$(p1)' 

:setvar path1 $(p1) + '\file1.sql'

:r $(path1)
Run Code Online (Sandbox Code Playgroud)

但是我没有找到在第二行中连接路径和文件名的正确方法。

第三次编辑: 我在这里找到了连接路径和文件名的解决方案。

PRINT '$(p1)' 

:r $(p1)\file1.sql
Run Code Online (Sandbox Code Playgroud)

还有更好的方法吗?

sql-server sqlcmd

5
推荐指数
1
解决办法
3224
查看次数

将 SQL Server 2000 数据库升级到 SQL Server 2008 后,视图未按列分组排序

我有两张桌子

  • 位置大师( [LocatioNo],[LocationName],[Description])
  • 位置数据( [LocationNo],[LocationCode],[DDate],[BillNo],[Model],[Quantity],[SNo])

表格内容
(来源:staticflickr.com
](http://www.flickr.com/photos/77377790@N08/6782618850 “点击查看Flickr”)

以及涉及在 SQL Server 2000 中创建的 2 个表的视图

CREATE VIEW [dbo].[QueryLocation]
AS
  SELECT TOP (100) PERCENT 
       dbo.LocationData.LocationNo, dbo.LocationData.LocationCode, 
       dbo.LocationData.DDate, dbo.LocationData.BillNo, 
       dbo.LocationData.Model,              
       SUM(dbo.LocationData.Quantity) AS Quantity, 
       dbo.LocationMaster.LocationName
  FROM 
       dbo.LocationData 
  INNER JOIN 
       dbo.LocationMaster ON dbo.LocationData.LocationNo = dbo.LocationMaster.LocatioNo 
  GROUP BY 
       dbo.LocationMaster.LocationName, dbo.LocationData.LocationNo, 
       dbo.LocationData.LocationCode, dbo.LocationData.DDate, dbo.LocationData.BillNo, 
       dbo.LocationData.Model ORDER BY dbo.LocationData.BillNo
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 2000 中执行以下查询时,网格中的结果按billno列排序。

SELECT *  FROM QueryLocation
Run Code Online (Sandbox Code Playgroud)

查询结果
(来源:staticflickr.com
](http://www.flickr.com/photos/77377790@N08/6782618858 “点击查看 Flickr”)

升级到 SQL Server …

sql-server-2008 sql-server

5
推荐指数
3
解决办法
2015
查看次数

具有“非图形”数据的图形数据库

--- 更新 ---
感谢您的评论和到目前为止的帮助。我很抱歉没有进一步说明问题。我已经更新了下面的问题。
- - 更新 - -

目前,我被要求为大量数据开发数据库结构。我正在争论实现图形数据库而不是“普通”关系数据库,并且想知道如果数据不一定包含任何关系有什么缺点?可以像表/表中的行一样使用单独的、未连接的节点吗?

我问这个是因为现在不需要关系,但我正试图在未来证明数据库(预期关系)以扩展数据的能力。如果有任何帮助,我正在 OrientDB/Neo4j 或 mySQL/postgreSQL 之间进行辩论。

一个例子:
假设我们有一个充满股票的数据库。任何人几乎可以在任何时间/天买卖股票(只要市场开放)。现在这个数据库可以是一个普通的关系数据库:Table 1: IDs | Products | Prices | Sizes | Dates. 但也有可能被组织为关系数据库Node 1: Stock A | Node 2: Stock B
如果我只是使用数据库来存储股票信息,在我看来普通的数据库会更好。但这是真的吗?它会不会对我使用关系数据库产生负面影响/使用普通数据库会更好吗?在节点而不是行中组织我的数据是否有缺点?

一张图说明一切:

该数据库将主要用于买卖类似股票的产品,但它们也有其他信息,例如附加到它们的位置。我正在尝试预测功能的实现,例如推荐产品,甚至预测某人要购买的下一个产品。

来自数据库的大多数查询将针对每个产品。
从数据库中提取:每天 100 到 1000 次。
推送到数据库:每天 20.000。

一个额外的问题可能会揭示一个缺点:
从关系到图或从图到关系有多容易。有任何锁定危险吗?

感谢所有的帮助,到目前为止评论都很棒!电阻

mysql graph

5
推荐指数
1
解决办法
3118
查看次数

多语句 TVF 上的 WITH SCHEMABINDING 是否会改进基数估计?

根据查询性能和多语句表值函数等文章,SQL Server 假设多行表值函数返回一行。如果它实际上返回许多行,这会导致为调用语句选择一个糟糕的执行计划。

添加SCHEMABINDING到函数是否会导致函数返回值集的基数估计更正确?

如果我们假设我们将一个UserId传递给这个函数并返回一个RecordId值的表,该表允许用户访问,并且一些用户只被允许查看一些记录,而一些用户被允许查看很多甚至所有记录,函数或调用语句(或包含它们的过程)是否会从使用中受益RECOMPILESCHEMABINDING函数中的使用会改变这个答案吗?

我意识到我可以通过实验来解决这个问题,但我希望有人已经找到了答案。指向有详细记录的地方的指针会有所帮助。

sql-server-2005 sql-server functions cardinality-estimates

5
推荐指数
1
解决办法
1374
查看次数

维护大表的全文索引

我使用的是 SQL Server 2008,有一个用于报告目的的表,其中包含 500,000 条记录,这些记录很容易达到数百万条。该表将采用全文索引来快速搜索少数列。

由于这是报告表而不是源事务表,因此有时会添加新记录,而有时由于源表中发生的更改而必须删除现有记录。

我的问题是关于构建(正在进行的)报告表并维护该表的全文索引的最佳方法。

添加全文索引后,我应该:

  1. 保留索引,并根据需要删除/添加记录
  2. 保留索引,截断报告表,然后插入所有适当的记录
  3. 其他?

到目前为止,我在研究时已经看到了这些文章,但这种情况的最佳实践并不明显。

  1. https://learn.microsoft.com/en-us/sql/relational-databases/search/get-started-with-full-text-search?redirectedfrom=MSDN&view=sql-server-ver15
  2. https://techcommunity.microsoft.com/t5/datacat/best-practices-for-integrated-full-text-search-ifts-in-sql-2008/ba-p/305000
  3. https://social.msdn.microsoft.com/Forums/en-US/c743f6e4-88c6-478b-954b-ba8207e391c5/sql-2005-full-text-index-rebuild-nightly-best-approach?forum=sqldatabaseengine

sql-server-2008 best-practices full-text-search

5
推荐指数
1
解决办法
3959
查看次数

编写一个 T-SQL 存储过程接收 4 个数字并将它们插入到一个表中

我需要编写一个存储过程来接收 4 个数字并将它们插入一个表中。这是我迄今为止开发的:

Declare   
@1  Int = 10,
@2  Int = 20,
@3  Int = 30,
@4  Int = 40


Create table #Temp(Num int)
Declare @I char(1) = 1


 While (@I <= 4)
   Begin

         Insert Into #Temp
         Select @I

     SET @I +=1
   end


Select * from #Temp
Drop table #Temp
Run Code Online (Sandbox Code Playgroud)

我知道我可以直接和静态地将输入插入表中,但我只想知道有没有更好的方法来做到这一点?我想使用一个while语句,但问题是 (I) 变量的数字被插入到表中!!我的意思是输出是 1,2,3,4; 我想要的是 10、20、30、40。

sql-server stored-procedures t-sql

5
推荐指数
3
解决办法
2289
查看次数

如何在 PostgreSQL 中使用 aes-256-gcm 加密来加密列?

作为数据库点人员,我需要对表中任何位置的 SSN 号码进行加密。我们使用 PostgreSQL。我的应用程序同行要求我们使用 AES-256-GCM 加密算法。但是,我不太确定如何在 postgresql 中应用它。

经过谷歌搜索后,我可以使用这两种 AES 方法之一进行加密:

1.

UPDATE ssnTable
   SET encrypted_ssn = encrypt(encrypted_ssn::bytea, 'mykey', 'aes')`
Run Code Online (Sandbox Code Playgroud)

2.

UPDATE ssnTable
   SET encrypted_ssn = pgp_sym_encrypt(encrypted_ssn, 'mykey', 'compress-algo=1, cipher-algo=aes256')
Run Code Online (Sandbox Code Playgroud)

以上都没有专门使用“aes-256-gcm”算法,这正是我被要求使用的算法。关于如何在 PostgreSQL 的列上使用这个算法有什么想法吗?

postgresql encryption

5
推荐指数
1
解决办法
1837
查看次数

SELECT 有 INSERT 子句吗?

我知道表格

Select * into new_table from old_table
Run Code Online (Sandbox Code Playgroud)

陈述。Bur 最近我在这里这里找到了 2 个帖子,它们使用它

SELECT * FROM NhlPlayer
INSERT INTO PlayerBackups
Run Code Online (Sandbox Code Playgroud)

我在msdn 中什么也没找到,这是一些新语法还是只是一个错误?我猜后者是因为

INSERT INTO PlayerBackups
SELECT * FROM NhlPlayer
Run Code Online (Sandbox Code Playgroud)

会工作得很好。

sql-server select

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

SQL Server 在哪里存储对称密钥?

我想知道在特定数据库中创建的对称密钥是否存储在主文件组中?

或者它们存储在用户无法与之交互的某些特殊文件组中?

例如,如果我对文件组(主要或次要)执行部分备份,我可以确定备份不包含对称密钥吗?

sql-server filegroups t-sql sql-server-2016 symmetric-key

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

SQL Server:相同主要/次要版本之间的备份,但不同版本之间是否兼容?

例如,在 SQL Server 10.50.6000.34 上执行的备份始终可以在 SQL Server10.50.4000.010.50.2500.0. 所有这些都表示 SQL Server 2008 R2 (10.50.xxxx.xx) 但不同的版本(服务包 2,3 等)。

从我所做的一些测试来看,似乎没有问题,但我想知道这是否总是可能的。

sql-server backup restore

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