在开发过程中遇到了相当奇怪的SQL Server行为.在这里,绝对相同的数字我们有完全相同的公式.唯一的区别是我们如何得到这个数字(4.250).从表,临时表,变量表或硬编码值.在所有情况下,圆角和铸造都是完全相同的.
-- normal table
CREATE TABLE [dbo].[value]
(
[val] [decimal] (5, 3) NOT NULL
)
INSERT INTO [value] VALUES (4.250 )
SELECT ROUND(CAST(val * 0.01 / 12 AS DECIMAL(15, 9)), 9) AS val FROM [value] AS pr
-- inline query from normal table
SELECT * FROM (SELECT ROUND(CAST(val * 0.01 / 12 AS DECIMAL(15, 9)), 9) AS val FROM [value] AS pr) a
-- record without table
SELECT ROUND(CAST(4.250 * 0.01 / 12 AS DECIMAL(15, 9)), 9) AS val …
Run Code Online (Sandbox Code Playgroud) sql sql-server sql-server-2008-r2 sql-server-2014 sql-server-2016
使用内联函数时,我得到奇怪的结果.这是代码:
IF EXISTS (
SELECT * FROM sys.objects AS o WHERE name = 'vendor_relation_users'
) DROP FUNCTION dbo.vendor_relation_users;
GO
CREATE FUNCTION [dbo].[vendor_relation_users]
(
@user_name CHAR(12)
)
RETURNS TABLE
AS
RETURN (SELECT @user_name AS user_name WHERE @user_name NOT LIKE '06%');
GO
DECLARE @u CHAR(12) = '066BDLER'
SELECT a.user_name, is_v.user_name
FROM (SELECT @u AS user_name) a
OUTER APPLY [dbo].[vendor_relation_users](@u) AS is_v
SELECT a.user_name, is_v.user_name
FROM (SELECT @u AS user_name) a
OUTER APPLY (SELECT @u AS user_name WHERE @u NOT LIKE '06%') AS …
Run Code Online (Sandbox Code Playgroud) 我想基于Pull Request描述创建自动发布说明,如下面的屏幕上的"添加法律解决索赔报告功能".
我对Pull Requests不太满意,甚至不确定"描述"是Bitbucket唯一的功能.但问题是如何从Pull Request中自动获取此描述?我在提交消息中找不到任何地方.
我有以下HTTPS服务器:
from flask import Flask, request, Response
from viberbot import Api
from viberbot.api.bot_configuration import BotConfiguration
from viberbot.api.messages import VideoMessage
from viberbot.api.messages.text_message import TextMessage
import logging
from viberbot.api.viber_requests import ViberConversationStartedRequest
from viberbot.api.viber_requests import ViberFailedRequest
from viberbot.api.viber_requests import ViberMessageRequest
from viberbot.api.viber_requests import ViberSubscribedRequest
from viberbot.api.viber_requests import ViberUnsubscribedRequest
logger = logging.getLogger(__name__)
app = Flask(__name__)
viber = Api(BotConfiguration(
name='PythonSampleBot',
avatar='http://www.clker.com/cliparts/3/m/v/Y/E/V/small-red-apple-hi.png',
auth_token='xxx-xxx-xxx'
))
@app.route('/', methods=['POST'])
def incoming():
logger.debug("received request. post data: {0}".format(request.get_data()))
# every viber message is signed, you can verify the signature using this …
Run Code Online (Sandbox Code Playgroud) 我多次看到这个问题,但我找不到让我满意的答案。基本上人们和书籍所说的是“虽然临时表在超出范围时会被删除,但您应该在不再需要它们时显式删除它们以减少服务器上的资源需求”。
我很清楚,当您在管理工作室工作并创建表时,在关闭窗口或断开连接之前,您将使用该表的一些资源,从逻辑上讲,最好删除它们。
但是当你使用过程时,如果你想清理表,你很可能会在它真正结束时这样做(我不是在谈论当你真的不需要它时你立即删除表的情况程序)。所以工作流程是这样的:
当您投入 SP 时:
据我所知,当你不放弃时它怎么可能工作:
这里有什么区别?我只能想象需要一些资源来识别临时表。还有其他想法吗?
更新:
我用 2 个 SP 进行了简单的测试:
create procedure test as
begin
create table #temp (a int)
insert into #temp values (1);
drop table #temp;
end
Run Code Online (Sandbox Code Playgroud)
另一个没有 drop 语句。我启用了用户统计并运行了测试:
declare @i int = 0;
while @i < 10000
begin
exec test;
SET @i= @i + 1;
end
Run Code Online (Sandbox Code Playgroud)
如图所示,当我不删除临时表时,所有统计数据都相同或有所减少。
更新2:
我第二次运行了这个测试,但现在有 10 万次调用,并且还添加了 SET NOCOUNT ON。这些是结果:
由于第二次运行确认,如果您不删除 SP 中的表,那么您实际上节省了一些用户时间,因为这是由其他一些内部进程完成的,但在用户时间之外。
我正在尝试对tSQLt框架进行一些改进,并且大部分时间都已完成,但由于与我未接触过的证书相关的测试仍然很少失败,所以无法做到这一点:
[exec] |18|[InstallExternalAccessKeyTests].[test creates correct certificate in master] | 120|Failure|
[exec] |19|[InstallExternalAccessKeyTests].[test tSQLt can be set to EXTERNAL ACCESS after InstallExternalAccessKey executed] | 333|Failure|
[exec] |20|[InstallExternalAccessKeyTests].[test tSQLtExternalAccessKey install data is signed with same key as tSQLt.clr] | 10|Failure|
Run Code Online (Sandbox Code Playgroud)
失败的错误是:
Expected: %publickeytoken=8c9a92de0f9c7794,%
Actual: tsqltclr, version=1.0.7216.13228, culture=neutral, publickeytoken=8d3f4bf59e4c22fd, processorarchitecture=msil
Run Code Online (Sandbox Code Playgroud)
我将尝试描述我的安装过程。
我使用以下指南安装了此框架源。但是之后我无法启动该项目,因为它失败并出现以下错误,并且整个问题的解决都在该SO帖子中完成:
[exec]
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(2482,5):错误MSB3325:无法导入以下密钥文件:tSQLtOfficialSigningKey.pfx。密钥文件可能受密码保护。若要更正此问题,请尝试再次导入证书或使用以下密钥容器名称将证书手动安装到强名称CSP:VS_KEY_C20B79DE0583A5C1 [E:\ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj] [exec]
C:\ Windows \ …
注意:问题是关于DATE类型,而不是日期时间或时间戳
如何更改日期数据类型列以默认使用当前日期?我看了很多关于datetime的例子,但没有看到日期.我试过了:
ALTER TABLE `accounting` ALTER `accounting_date` SET DEFAULT CURRENT_DATE;
ALTER TABLE `accounting` CHANGE `accounting_date` `accounting_date` DATE NOT NULL DEFAULT CURRENT_DATE;
Run Code Online (Sandbox Code Playgroud)
我也试过CURDATE(),NOW(),CURRENT_DATE()......
我正在尝试将消息从Viber bot发送给订阅的用户。我可以获得订阅的用户ID,但是当我发送消息时,出现500错误。
from flask import Flask, request, Response
from viberbot import Api
from viberbot.api.bot_configuration import BotConfiguration
from viberbot.api.messages.text_message import TextMessage
app = Flask(__name__)
viber = Api(BotConfiguration(
name='PythonSampleBot',
avatar='http://www.clker.com/cliparts/3/m/v/Y/E/V/small-red-apple-hi.png',
auth_token='xxx-xxx-xxx'
))
@app.route('/', methods=['POST'])
def incoming():
user_id = viber.get_account_info()['members'][0]['id']
print(user_id)
viber.send_messages(user_id, [
TextMessage(text="thanks for subscribing!!!!!")
])
return Response(status=200)
if __name__ == "__main__":
context = ('E:\\Docs\\learn_py\\viberbot\\cert.pem',
'E:\\Docs\\learn_py\\viberbot\\key.pem')
app.run(host='0.0.0.0', port=4443, debug=True, ssl_context=context)
Run Code Online (Sandbox Code Playgroud)
请求消息发送代码:
import json
import requests
webhook_url = 'https://xxx.xxx.xxx.xxx:4443'
requests.post(
webhook_url, data=json.dumps({"text": "Hello World"}),
headers={'Content-Type': 'application/json'},
verify='E:\\Docs\\learn_py\\viberbot\\cert.pem'
)
Run Code Online (Sandbox Code Playgroud)
错误讯息:
Cfklv9HOJ6bXZcHMaTl9Gw== …
Run Code Online (Sandbox Code Playgroud) 我们将Jira Issue #添加到提交消息中,以将更改与Jira Issue链接起来。由于问题编号是手动添加的,很容易出现人为错误。由于我们总是在git 分支中保存这个数字,所以提交消息可以有这个分支名称的默认值吗?可以通过VS 代码扩展或git 模板来完成吗?
我正在开发VS Code扩展,并希望从SQL Server数据库中获取一些数据。我尝试了许多不同的示例,但没有一个对我有用。
const Connection = require('tedious').Connection;
const config = {
user: 'ssrs', // tried userName, username
password: 'ssrs',
server: 'localhost',
options: {
database: 'imdb'
}
}
const connection = new Connection(config);
connection.on('connect', function(err: string) {
if (err) {
console.log(err);
} else {
console.log('Connected');
}
});
Run Code Online (Sandbox Code Playgroud)
要么
await sql.connect('mssql://ssrs:ssrs@localhost/imdb')
const result = await sql.query`select 1 as one`
console.dir(result)
Run Code Online (Sandbox Code Playgroud)
要么
const sql = require("mssql");
const conn = new sql.ConnectionPool({
database: "imdb",
server: "localhost",
driver: "msnodesqlv8",
userName: "ssrs",
password: "ssrs"
});
conn.connect().then(() …
Run Code Online (Sandbox Code Playgroud) sql-server node.js typescript visual-studio-code vscode-extensions
sql-server ×5
bots ×2
git ×2
python ×2
python-3.x ×2
viber ×2
apply ×1
bitbucket ×1
flask ×1
jira ×1
mysql ×1
node.js ×1
outer-apply ×1
pfx ×1
pull-request ×1
snk ×1
sql ×1
t-sql ×1
temp-tables ×1
tsqlt ×1
typescript ×1
webhooks ×1