SQL Server:连接来自两个不同数据库的两个表时出错

问题描述

我正在使用SSMS,我试图将来自两个不同数据库的两个表连接到同一服务器上。

两个表有一个公用的from multiprocessing import Process from time import sleep spinnerFrames = [ "/","-","\\","|",] def spinner(): i = 0 while True: print(spinnerFrames[i],end='\r') i = i + 1 if (i == 3): i = 0 sleep(0.15) if __name__ == '__main__': p = Process(target=spinner) p.start() sleep(3) p.terminate() print("Done!") 列。

我的查询是:

id

我收到此错误

在等于的操作中,无法解决latin1_General_CI_AI”和“ french_CI_AS”之间的排序规则冲突。

解决方法

您的两个数据库没有相同的排序规则。您需要在联接中指定“ COLLATE DATABASE_DEFAULT”子句。

select * from db1.dbo.EPH e join db2.dbo.SALARIE s on e.id COLLATE DATABASE_DEFAULT=s.id COLLATE DATABASE_DEFAULT

应该可以解决问题。

,

在Microsoft SQL Server中,可以在列级别设置排序规则。当您比较(或连接)查询中具有不同排序规则的两列时。

示例:

SELECT * FROM db1.dbo.EPH e
JOIN db2.dbo.SALARIE s
ON e.id COLLATE DATABASE_DEFAULT = s.id
,

尝试使用COLLATE Latin1_General_CI_AS

#include "Server.h"

Server::Server(QObject *parent) : QObject(parent)
{
    server = new QTcpServer(this);

    qDebug() << connect(server,SIGNAL(newConnection()),SLOT(newConnection()));
    qDebug() << connect(server,SIGNAL(bytesWritten()),SLOT(bytesWritten()));

    qDebug() << "Listening:" << server->listen(QHostAddress::Any,1451);

    server->waitForNewConnection(-1);
}

void Server::newConnection()
{
    qDebug("Connection received");

    client = server->nextPendingConnection();

    client->write("Some random data\n");
    bool returnValue = client->flush();

    qDebug() << "Return value: " << returnValue;

    qDebug() << client->waitForBytesWritten(-1);

    qDebug() << "Error: " << client->errorString();

    qDebug() << "Bytes written";
}

void Server::bytesWritten(qint64 bytes)
{
    qDebug() << "Bytes written: " << QString::number(bytes);
}

void Server::writeData(std::string data)
{
    QByteArray byteArray = QByteArray(data.c_str());

    qDebug() << "Write data: " << QString::fromStdString(data);
    client->write(byteArray);
}