Siyuan的程式開發筆記
2021年1月26日 星期二
自行定義的Model模型處裡
如果有自行定義的Model,需要加入Context中使用時
首先建立Model
例如:
public class LoginRtnval
{
public int rtnval { get; set; }
public string grade { get; set; }
public string ptype { get; set; }
}
然後在
testContext中的資料表宣告中加入
public DbSet LoginRtnvals { get; set; }
在OnModelCreating中加入
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasNoKey();
.
.
.
.
.
}
Entity Framework Core DataBase First
因為EF CORE不支援資料庫視覺化設計及透過精靈產生entity與context classes,必須使用NuGet Package Manger的Package Manger Console 以命令的方式來產生Model
主要使用命令為Scaffold-DbContext
需注意NuGet是否安裝以下元件
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServe
範例:
Scaffold-DbContext [-Connection] [-Provider] [-OutputDir] [-Context] [-Schemas>] [-Tables>]
[-DataAnnotations] [-Force] [-Project] [-StartupProject] []
Scaffold-DbContext "Server=.\SQLExpress;Database=SchoolDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Scaffold-DbContext "Data Source=192.168.1.100;Initial Catalog=testdb;Persist Security Info=True;TrustServerCertificate=true;User ID=username;Password=userpwd" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models\Test
//若資料庫有更新(全部),則後面可以加上 「-Force」
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
//只更新某一個資料表,如 Blog,可以加上-Tables Blog
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Blog -Force
在DBContext建立完成之後,可將連線字串移往appsettings.json裡。
首先將TestContext裡的if (!optionsBuilder.IsConfigured)內容清除或直接刪除
在appsettings.json中加入
"ConnectionStrings": {
"TestConnection": "Server=****;Database=****;User ID=*****;Password=****;Trusted_Connection=True;Integrated Security=False;"
}
於 Startup.cs註冊DbContext,引用
using WebApplicationRazorPages.Models.Test;
using Microsoft.EntityFrameworkCore;
public void ConfigureServices(IServiceCollection services)
{
...
services.AddDbContextTestContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("TestConnection")));
}
PS:需注意在執行該命令時,專案不可以有錯誤,否則會有Build Failed發生
2020年11月12日 星期四
SQL SERVER出現The activated proc '[dbo].[sp_syspolicy_events_reader]' running on queue 'msdb.dbo.syspolicy_event_queue' output the following: 'Cannot execute as the database principal because the principal "##MS_PolicyEventProcessingLogin##" does not exist, this type of principal cannot be impersonated, or you do not have permission.' 錯誤
在SQL SERVER的LOG上有發現這個錯誤訊息,每5秒出現一則,原因為msdb使用還原的方式且系統架構由C變為C、D
先使用以下命令檢查,會發現master和msdb的SID不一樣
USE master
SELECT * FROM sys.database_principals
WHERE [name] = '##MS_PolicyEventProcessingLogin##'
go
USE msdb
SELECT * FROM sys.database_principals
WHERE [name] = '##MS_PolicyEventProcessingLogin##'
go
使用以下命令來修正
use [master]
go
exec sp_change_users_login 'Auto_Fix', '##MS_PolicyEventProcessingLogin##';
go
use [msdb]
go
exec sp_change_users_login 'Auto_Fix', '##MS_PolicyEventProcessingLogin##';
go
再使用以下命令來檢查是否有修正
USE master
SELECT * FROM sys.database_principals
WHERE [name] = '##MS_PolicyEventProcessingLogin##'
go
USE msdb
SELECT * FROM sys.database_principals
WHERE [name] = '##MS_PolicyEventProcessingLogin##'
go
參考資料
https://dbamohsin.wordpress.com/2017/01/12/cannot-execute-as-the-database-principal-because-the-principal-ms_policyeventprocessinglogin/
SQL SERVER 維護計畫無法啟用,出現SSIS 子系統無法載入 [see the SQLAGENT.OUT file for details]; 已暫停作業
當MSDB使用還原的方式,如果SQL SERVER架構變更,例如由C碟改為C、D兩碟,在使用SQL維護計畫時SQL Agent會有錯誤發生,導致無法執行維護計畫
解決方法如下
檢查MSDB的資料
select * from msdb.dbo.syssubsystems
會發現subsystem_dll的資料仍然是指到C碟
執行以下指令
delete from msdb.dbo.syssubsystems
exec msdb.dbo.sp_verify_subsystems 1
再重新啟動 Agent 服務即可
參考資料
https://byronhu.wordpress.com/2011/07/04/sql-agent-job-%E6%9A%AB%E5%81%9Csuspend/
2020年11月10日 星期二
Windows共用相關指令
命令視窗需用管理員權限開啟
以下為開啟管理員權限的CMD
在PowerShell使用指令Start-Process "cmd.exe" –Verb RunAs
或
按Window+X,再按A
建立LocalUser
net user username password /add
建立LocalGroup
net localgroup testgroup /add /comment:"This is group for test users"
將user加入localgroup
net localgroup testgroup jack /add
將user移出localgroup
net localgroup testgroup jack /delete
移除localgroup
net localgroup testgroup /delete,
設定共用指令:net share test1$=d:\test1 /GRANT:jack,READ /GRANT:bob,REAF
說明:將d:\test1設為共用,名稱test1$,授予使用者jack讀取的權限
net share sharename=drive:path [/GRANT:user,[READ | CHANGE | FULL]]
[/USERS:number | /UNLIMITED]
[/REMARK:"text"]
[/CACHE:Manual | Documents| Programs | BranchCache | None]
設定目錄安全性指令:icacls "d:\test1" /grant jack:(OI)(CI)M /T
說明:將d:\test1的安全性加入jack的權限,(OI)物件繼承,(CI)容器繼承,M修改存取權,/T在目前目錄及其子目錄中的所有指定檔案上執行作業。
完整說明參考https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/icacls
設定share folder權限
subinacl /share \\serverName\shareName /grant=everyone=r
2019年5月14日 星期二
TSQL取得SQL SERVER IP
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address
2018年5月23日 星期三
訂閱:
文章 (Atom)