有一个问题,想获得最佳实践或想法。
我有一个使用 SQL Server 后端开发的应用程序(站点是实体框架、vb.net、asp.net)。原始设计在 db 本身中没有数据库图表/模式/关系表。
该网站运行良好,但遭到了另一个团体的反对,该团体说它必须有一个关系表才能正常工作。
那么这是个人喜好还是什么?我不是 DB 专家,我试图找出这是否是两种开发方式,并且有人试图将个人偏好置于标准或最佳实践之上。
我刚刚开始了我的第一个在线数据库课程,我有一个家庭作业,从规范列表中创建实体关系图 (ERD)。
规格如下:
公司按部门组织。每个部门都有一个名称、一个唯一编号和管理该部门的特定员工。我们跟踪员工开始管理部门的开始日期。一个部门可能有多个位置。
一个部门控制多个项目,每个项目都有一个名称、唯一编号和一个位置。
我们存储每个员工的姓名、SSN、地址、薪水、性别和 DOB。一名员工被分配到一个部门,但可能从事多个项目,这些项目不一定受同一部门控制。我们会跟踪员工每周为每个项目工作的小时数。我们还跟踪每位员工的直接主管。
为了保险起见,我们希望跟踪每个员工的家属。我们保留每个受抚养人的姓名性别、出生日期以及与员工的关系。
在我的数据库设计课程中,我们学习了关系代数和关系微积分。我可以看到关系代数在哪里有用,因为它与 SQL 密切相关。
我们的教授说,在一些 RDMBS 中,关系微积分被用作 SQL 的替代品,其中大部分已不再存在。关系微积分还有实际用途,还是大部分是理论性的?
尝试使用终端从终端启动 MySQL 时,mysql -u <username> -p<password>
出现以下错误:
mysql: [错误] 未知变量 'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
在 MySQL 正在寻找 .cnf 文件(通过运行找到它们sudo /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
)的三个可能的位置中,只/etc/mysql/my.cnf
存在。其中只有一个目录,包括!includedir /etc/mysql/conf.d/
. 在那里,/etc/mysql/conf.d/mysql.cnf
有以下几行:
[mysql]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)
四处寻找答案,找不到任何答案。一一尝试从模式列表中排除特定的“坏模式”,它们都无法识别。
只有完全注释掉这一行,我才能登录并启动 MySQL。
有谁知道问题可能是什么?
平台和操作系统方面:
我正在管理 PotsgreSQL 服务器,最近我意识到我的“非超级用户”用户有可能更改我为不安全密码分配的安全密码。
我在REVOKE
文档中进行了搜索,但找不到阻止这种情况的方法。有可能的?
提前致谢!
我将数据库与 Visual Studio 2017 连接。当我尝试执行查询时,它显示以下错误:
我使用的连接字符串是:
SqlConnection con = new SqlConnection("Data Source=ANUPAM-DESKTOP\ANUPAM;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
Run Code Online (Sandbox Code Playgroud)
我的代码:
public void exicuteDatabaseQuery(String query)
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(query, con);
sda.SelectCommand.ExecuteNonQuery();
con.Close();
MessageBox.Show("Successfull");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
int id = Convert.ToInt32(___Id_.Text);
int number = Convert.ToInt32(___Number_.Text);
String InsertQuery = "INSERT INTO Member (id, number)
values('"+id+"','"+number+"')";
exicuteDatabaseQuery(InsertQuery);
}
Run Code Online (Sandbox Code Playgroud)
数据库浏览器图像:
最近我们学区已经将多台服务器从2005版升级到2016版,从物理服务器升级到VM服务器。
我们的基础架构团队展示了用于 SQL Server 安装的单核 VM 服务器。
我试图向该部门的负责人解释 SQL Server“讨厌”在单核上,而他希望看到“证据”。我提供的数据都不能满足他的证明需要,因此他要求提供一些关于为什么 VM SQL Server 不能在单核上有效运行的文章。
你用什么文章来做这件事?
任何对我的案件的帮助将不胜感激!
我对 SQL Server Always On 的理解有些担忧。请您在需要时纠正我(概念上):
Always On 集群和 Always On 可用性组是 2 个独立的概念。集群是一种 HA 解决方案,而 AG 是一种 DR 解决方案。Always On 群集是否与 Windows 服务器群集相同?
要创建 Always On 群集 - 我们必须启动安装程序并选择“新 SQL Server 故障转移群集安装”,然后在每个新节点上我们需要启动安装程序并选择“添加节点”。集群(有多个节点)在IP地址方面作为一个单元运行,因此应用程序只指向一个IP,如果发生实例崩溃,则故障转移由集群技术处理,不需要更改应用程序IP。此外,用户/登录名是同步的,并且在故障转移的情况下将继续工作。这不能防止磁盘故障,因为所有节点共享同一个磁盘。
假设我们已经有一个 SQL Server 实例(比如服务器 A),那么要为此创建 Always On Clustering,我们需要执行与上述相同的步骤(创建新的故障转移集群安装),然后将服务器 A 添加为节点。对?
假设我们有一个新的 SQL Server 实例(没有 HA/DR)并且计划只配置 AG,那么我们首先需要确保在每个参与节点上启用“故障转移群集”窗口功能。然后右键单击 SQL Server 服务并启用“Always on Availability Groups”。然后在服务器实例上,我们创建 AG 并将数据库配置到组中。这确保了数据库级别的可用性,但是如果发生故障转移,则登录将不再起作用(孤立)。没有共享磁盘,因此主服务器的磁盘崩溃不会导致辅助服务器数据库出现任何问题。此外,客户端应用程序将指向侦听器 IP,侦听器将确保应用程序使用适当的工作服务器。对?
在上述场景中,启用了“故障转移群集”窗口功能,因此群集是 AG 的先决条件吗?Point 2 和 Point 4 中聚类的概念是否相同。
如果我希望使用 Always On (AG) 和故障转移群集配置 HA/DR,那么最佳做法是遵循第 2 点然后是第 4 点还是相反的方式?另外,我们是否应该同时使用虚拟集群名称和监听器,或者如果足够,我们应该使用其中之一吗?
“SQL Server 故障转移群集安装”和 Windows …
我有一个数据库,其中 DBCC CHECKTABLE 在许多小表或空表上运行需要超过 15 分钟。当它完成时,没有失败或错误。服务器上其他所有内容的性能都处于非常可接受的状态。同时没有其他东西在运行。
我还尝试了 DBCC CLEANTABLE 并使用全扫描更新了统计信息。
我使用的是 SQL Server 2016 企业版 (13.0.5201.2)
示例表:
CREATE TABLE [Schema1].[Table1](
[col1] [int] NOT NULL,
[col2] [nvarchar](100) NOT NULL,
[col3] [xml] NOT NULL,
CONSTRAINT [PK_1] PRIMARY KEY CLUSTERED
(
[col1] ASC,
[col2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud) 假设您有两个关系R和S,其中R有 1000 个元组和 100 个页面访问,而S有 50 个元组和 25 个页面访问。
假设R是外部关系,那么完成了多少元组比较和页面访问?
如果R是内部关系,那么有多少页面访问?
for each tuple r in R do
for each tuple s in S do
if r and s satisfy the join condition
then output the tuple (r,s)
Run Code Online (Sandbox Code Playgroud)
因此,为了找出完成了多少元组比较,我需要执行 1000 * 50 = 50000 因为算法正在“针对每个”元组执行此操作,并且我们总共有 1000 个元组R和 50 个元组S,因此总共 50000 次比较。
但是现在如何知道页面访问?如果R在外部,我们有 (1000 个元组) * ( S 的25 个页面访问) + ( …
sql-server ×6
mysql ×2
clustering ×1
dbcc ×1
erd ×1
errors ×1
failover ×1
join ×1
mysql-5.7 ×1
password ×1
permissions ×1
postgresql ×1
security ×1
users ×1
vmware ×1