我在本地网络上有一个SQL Server数据库和一个Intranet Web应用程序.Intranet Web应用程序创建记录并将它们发送到数据库.我有一个Internet Web应用程序,我想在本地网络上使用SQL Server数据库发送新记录.
我无法出于各种原因更改/修改Intranet Web应用程序,因此我唯一的选择是在本地SQL Server上创建一个触发器,该触发器将使用某种http post请求或url调用将新记录发送到Internet Web应用程序.
INTERNET Web应用程序设置有RESTful api,可以通过表单发布到公共可访问的URL(例如http://www.example.com/records/new)接收新记录.
有没有人知道如果通过URL发送数据(xml,json,纯文本变量)可以在SQL Server中完成?
谢谢你的任何想法!
简短版本:我可以向外部数据库授予对角色的访问权限吗?
长版:
我正在处理使用Crystal的报告,它正在从应用程序SQL Server实例(database1)中检索数据.
应用程序正在运行报告并覆盖报告中的连接,我无法访问应用程序代码.
我已经向服务器添加了一个新的数据库(database2),它正在从电话交换机收集信息,我想将这些信息加入到应用程序数据(database1)中.
我可以在设计器中运行时加入数据和报告(以SA身份登录),但是当报告通过应用程序从外部运行时,它们会因相当一般的错误而失败(无法检索数据).
我假设错误是由新的数据库权限引起的,就像我以SA身份登录应用程序时错误消失了.
对于运行报表的用户,应用程序具有特殊的数据库角色,在向应用程序db(database1)添加表/视图/ sp时,我可以简单地向此角色授予select/execute以允许报表访问对象.
现在我在不同的数据库中有对象,但是角色不容易访问.
有什么方法可以database2通过现有角色引用第二个db()吗?
例如:
USE [database1]
GRANT EXECUTE ON [database2].[dbo].[CUSTOM_PROCEDURE] TO [applicationrole1]
OR
USE [database2]
GRANT EXECUTE ON [dbo].[CUSTOM_PROCEDURE] TO [database1].[dbo].[applicationrole1]
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够以某种方式链接到角色而不是重新创建新角色,因为在添加/配置新用户时,应用程序会定期更新角色.
(未标记为Crystal-Reports,因为这与问题无关)
编辑:
有什么方法可以做以下事情:
INSERT INTO Database2.sys.database_principals
SELECT * FROM Database1.sys.database_principals
WHERE [type] = 'S'
Run Code Online (Sandbox Code Playgroud)
要复制用户(不是登录),然后添加角色成员?
我知道这个主题已经详细讨论了(我在这里和网上都阅读过很多帖子)而且我不喜欢鞭打死马,但我对整数ID与GUID的更具体方面有疑问:
我正在编写一个模式,它将具有与stackoverflow标签类似的标记功能,但它将使用相同的标签对5个不同的表使用.
我要链接的基本表格如下:
标签表
Tag ID Tag Name Tag Description
-------------------------------------------------------------
1 Hats Tag for hats
2 Coats Tag for coats
3 Gloves Gloves tag
4 Ladies Ladies item
Run Code Online (Sandbox Code Playgroud)
项目表1
Item ID Item Name Cost
------------------------------------------------------------
1 Deerstalker £20.00
2 Fedora £50.00
3 Scarf £15.00
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的是tag_item桌子.
我将有5个具有完全不同结构的表,我希望用户能够应用标签,所以我想我需要执行以下操作之一:
table name/ table number以及标记所涉及的行的整数键GUID一行,这将独立于表格工作,使得获取某一行的所有标记变得更加容易.我不确定的是这将如何影响以下方面的表现:
在这种情况下是否有任何明显更好的选择,或者我可以阅读这个特定情况下的优势?
编辑:
对于任何感兴趣的人,下面是我决定的架构:
标签表
CREATE TABLE [dbo].[Sys_TagList](
[Sys_Tag_Primary] [int] IDENTITY(1,1) NOT NULL,
[Sys_Tag_Name] [varchar](50) NOT NULL,
[Sys_Tag_Description] …Run Code Online (Sandbox Code Playgroud) 我正在编写一个存储过程来处理属于应用程序的表,并将值插入属于同一应用程序的表中(因此我无法修改任何一个表).
我必须只处理新记录并记住已经处理了哪些记录,为此我创建了第三个简单表.
表格如下,删除了许多列以仅留下重要细节.
来源表
CREATE TABLE [dbo].[DETAIL](
[DET_NET] [float] NULL,
[DET_VAT] [float] NULL,
[DET_VATCODE] [varchar](4) NULL,
[DET_GROSS] [float] NULL,
[DET_DATE] [datetime] NULL,
[DET_PRIMARY] [float] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
目标表
CREATE TABLE [dbo].[TRN_TEMP](
[TRN_TRAN_DATE] [datetime] NULL,
[TRN_DESCRIPTION] [varchar](20) NULL,
[TRN_PRIMARY] [int] NULL,
[TRN_AMT] [float] NULL
)
Run Code Online (Sandbox Code Playgroud)
跟踪表
CREATE TABLE REGISTER(
LINE_ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED NOT NULL,
DET_PRIMARY_LINK FLOAT NOT NULL,
INS_DATE DATETIME NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
我试图从源表插入Target表值,但也将源表的主键插入到跟踪表中.
INSERT INTO TRN_TEMP (TRN_TRAN_DATE, TRN_DESCRIPTION, TRN_AMT)
OUTPUT D.DET_PRIMARY, GETDATE() INTO REGISTER (DET_PRIMARY_LINK, INS_DATE)
SELECT …Run Code Online (Sandbox Code Playgroud) 我有一张桌子,其客户,用户和收入类似于以下(实际上有数千条记录):
Customer User Revenue
001 James 500
002 James 750
003 James 450
004 Sarah 100
005 Sarah 500
006 Sarah 150
007 Sarah 600
008 James 150
009 James 100
Run Code Online (Sandbox Code Playgroud)
我想要做的只是返回占用户总收入80%的最高消费客户.
要手动执行此操作,我会根据收入对James的客户进行排序,计算总计百分比和运行总百分比,然后仅返回记录,直到达到运行总计达到80%:
Customer User Revenue % of total Running Total %
002 James 750 0.38 0.38
001 James 500 0.26 0.64
003 James 450 0.23 0.87 <- Greater than 80%, last record
008 James 150 0.08 0.95
009 James 100 0.05 1.00
Run Code Online (Sandbox Code Playgroud)
我尝试过使用CTE但到目前为止已经空白了.有没有办法通过单个查询而不是在Excel工作表中手动执行此操作?
我有一个 MongoDB 数据库,我正在使用 Mongoose 进行查询。
我正在使用一个集合audits来存储有关更新更改、登录失败和错误的信息。
审计模式
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;
const auditSchema = new Schema({
ref: {
type: String,
required: true
},
linkedId: {
type: Schema.ObjectId,
refPath: 'ref'
},
action: {
type: String,
enum: ['insert', 'update', 'delete', 'special']
},
/* ... lots more fields */
});
module.exports = mongoose.model('audit', auditSchema);
Run Code Online (Sandbox Code Playgroud)
使用以下查询在我的 docker 容器中查询此集合:
return Audit.find().sort({date: -1})
.skip(skipInt)
.limit(limitInt)
.populate('user')
.populate('linkedId')
.exec();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Schema hasn't been registered for model "error". Use …Run Code Online (Sandbox Code Playgroud) 我正在进行javascript + jQuery的第一次尝试,设计一个简单的页面但遇到错误,我确定这是一些愚蠢的事情,但我已经多次查看代码并且无法发现它.
我收到的错误如下:

整个代码如下(我已将动态'#' + elementname + 'perc'更改为字符串,我得到相同的错误),任何人都可以提供任何见解吗?
<DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
<!--<script src="js/dealercalc.js"></script>-->
<script type="text/javascript">
$(document).ready(function(){
$(".val-adjust").click(function(){
var name = $(this).attr('name');
var bit = $(this).attr('value');
setvalue(name,bit);
//discountbits['basic'] = false;
//$("#basedisper").text(discountlist['basic']);
});
$("#basdisyes").click(function(){
discountbits['basic'] = true;
//$("#test1").html("<b>Hello world!</b>");
});
$("#btn3").click(function(){
$("#test3").val(gettotal());
});
}
);
function getpercbypurc(value){
return 0;
};
function setvalue(elementname,yesno){
discountbits[elementname] = yesno;
if (yesno) {
$("#basicperc").hmtl(discountlist[elementname] + "%");
} else {
$('#' + elementname + 'perc').hmtl("0%");
}
};
function gettotal() {
var total …Run Code Online (Sandbox Code Playgroud) 我用来express.static提供静态文件,如下所示:
['/images','/packages','/scripts','/stylesheets'].forEach(p => {
app.use(p, express.static(siteSettings.publicFolder + p));
});
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但是当请求不存在的文件时,express 会按预期引发错误,但这会击中我的自定义错误包罗万象的路线:
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'production' ? {} : err;
// render the error page
res.status(err.status || 500);
res.render('views/error');
});
Run Code Online (Sandbox Code Playgroud)
这意味着文件 404 错误(例如图像文件)正在向客户端返回完整的错误文档 (26kb),这似乎是一个坏主意。
有什么方法可以发现express.static 导致了错误吗?
我想过做类似的事情:
if (req.path.indexOf("/images") === 0){
res.send('Not found');
} else {
res.render('views/error');
}
Run Code Online (Sandbox Code Playgroud)
但我正在寻找类似的东西:
if (req.errorFromStatic){
res.send('Not found');
} else {
res.render('views/error');
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点吗?
我正在构建一个应用程序,通过ftp和XML文件将数据从SQL服务器传输到非现场位置.
我正在通过查询为每个文件构建XML数据FOR XML PATH('path'), TYPE.
我将使用a GUID生成文件名以及用作文件中的标识符,目前我的SQL获取表如下(简化):
SELECT LVL1.inv_account_no
, LVL1.cus_postcode
, CONVERT(varchar(255),NEWID()) + '.xml' as FileName
, (SELECT (SELECT CONVERT(varchar(255),NEWID()) FOR XML PATH('ident'), TYPE), (
SELECT.... [rest of very long nested select code for generating XML]
Run Code Online (Sandbox Code Playgroud)
这给了我:
Account Postcode FileName xCol
AD0001 B30 3HX 2DF21466-2DA3-4D62-8B9B-FC3DF7BD1A00 <ident>656700EA-8FD5-4936-8172-0135DC49D200</ident>
AS0010 NN12 8TN 58339997-8271-4D8C-9C55-403DE98F06BE <ident>78F8078B-629E-4906-9C6B-2AE21782DC1D</ident>
Run Code Online (Sandbox Code Playgroud)
每行/使用的基本不同的GUID NEWID().
有没有办法可以在不增加游标或进行两次更新的情况下将相同的GUID插入到两列中?
我有这个循环:
using(var db = new MainContext())
{
var q = db.tblInternalURLs;
foreach (var rec in q)
{
db.ExecuteCommand("UPDATE tblInternalURLS SET hash = '" + LoginAPI.GetSha1(rec.URL) + "' WHERE ID = " + rec.ID);
}
}
Run Code Online (Sandbox Code Playgroud)
转换更新查询db.ExecuteCommand已大大提高了速度,但我想知道是否有更快的方法来执行这些查询,因为它仍然需要很长时间超过2,000,000条记录.我相信很多开销都在最初的LINQ查询中.它是否正确?