은 까다 롭습니다. 우선, 잘 격리 된 관리자 및 서비스 계정보다 사용자 계정이 더 자주 손상되므로 사용자가없이 공격 할 수 있습니다. 그런데 공격자가 시스템에 침입 할 수 있도록 사용자 계정을 해킹해야하며 모든 사용자가 자신의 자격 증명을 갖고 있으면 SQL Server에 제어 기능을 잘 세분화해야합니다.
엑셀 - 기본 인터페이스를 사용
는 대부분의 개발자들이 지난 십여 년 동안 그것을 어떻게했는지입니다 VBA 또는 VSTA를 통해 그 일에서 해당 다르지 않다. 이러한 방법은 네트워크만큼 안전합니다. Excel 기본 기능은 관계없는 참조 없이도 작동합니다. 유지 관리 목적으로 특히 유용합니다. 주요 차이점은 임의의 쿼리를 수행 할 수있는 능력에있는 것 같습니다. 보안 및 데이터 무결성을 위해 이것은 최선의 방법 일 것입니다.
저장 프로 시저를 실행하는 것은 좋은 생각이 아닙니다. 사용자가 자주 조정할 필요가있는 (원하는) 경우 대규모 지원 요구 사항을 얻을 수 있기 때문입니다. 보기로 할 수 있습니까? Excel의 내장 된 필터링 및 분류 기능은 매우 강력합니다. 그것은 나의 첫 번째 접근 방법입니다.
필요에 따라 여러 가지 방법이 있습니다
1 - 통합 문서에 관련된 VBA 매크로에 액세스 코드를 이동 - 데이터베이스가 개별 사용자
2에 데이터를 묶을 수 있도록 스키마를 수정 . 권장하지는 않지만 ADO를 직접 사용할 수 있습니다. 사용자 계정에 대한 액세스 권한을 가진 공격자가 사용자가 수행 할 수있는 모든 작업을 수행 할 수 있기 때문에 데이터베이스 측에서는 보안 설정을 확실히해야합니다.
VBA 환경의 도구 -> 참조에서 최신 Microsoft ADO 버전을 찾으려면 VBA 경로로 이동하십시오.
Dim Connection as ADODB.Connection
Set Connection = new ADODB.Connection
Connection.Open"Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;"
Dim command As ADODB.command
command.CommandText = "exec sp_something"
Dim Parameters(2) As ADODB.Parameter
Set Parameters(1) = New ADODB.Parameter
Parameters(1).Name = "field_name"
Parameters(1).Type = adVarChar
Parameters(1).Size = 50
Set Parameters(2) = New ADODB.Parameter
Parameters(2).Name = "field_name_2"
Parameters(2).Type = adVarChar
Parameters(2).Size = 50
Dim i As Integer
For i = LBound(Parameters) To UBound(Parameters)
command.Parameters.Append Parameters(i)
Next i
Dim Records As ADODB.Recordset
Set Records = command.Execute
는 시트 또는 입력 상자를 통해 값을 설정하여 버튼, 해당 매크로를 묶어, 멀리 화재 : VBA 코드는 다음과 같이 보인다. 그러나 나는 경고를 되풀이한다.이 방법을 사용하면 엄청난 지원 요구가 발생한다. 사람들이 맞춤 데이터를 추출하기를 원한다면, 그 데이터에 대해 매우 특별하게됩니다.
웹 인터페이스 등을 사용할 수 없습니까? 저장 프로 시저를 실행하고 csv/xls를 반환하는 것은 매우 쉽습니다. 엑셀에서 이것을하는 것은 완전히 불필요한 것처럼 보입니다. – user606723
@ user606723 전적으로 동의하지만 사장님이 Excel을 사용하고 싶습니다 –
이 VBA를 배포 할 것이므로 가능한 한 작고 단순한 VBA를 만들려고합니다. 그것을 할 수있는 좋은 방법은, .. 될 것입니다 VBA는 CSV 웹 인터페이스에서 다운로드 = P는. 당신은 또한 상사에게이 일을 Excel에서하는 것이 끔찍한 해결책이라는 것을 확신시켜야합니다. – user606723