구성중인 소프트웨어에 문제가 있습니다. 필자는 소스 코드에 액세스 할 수 없으며 config 만 액세스 할 수 있습니다.sp_executesql 변수를 이스케이프 처리하려고합니다.
문제는 다음과 같습니다. 구성에서 소프트웨어는 문자열을 입력 할 것으로 예상하지만 문자열을 비교에서 제외하고 대신 funtion을 실행합니다. 패턴이 고급 명확 defind하지 않기 때문에,
exec sp_executesql N'SELECT * FROM dummyTable WHERE (Name LIKE @Pattern)',N'
이 내 설정에서 작동하지 않습니다
는 SQL 프로파일 러를 사용하여 나는 이런 식으로 뭔가를 얻을. 패턴으로 전달 된 변수 을 가져 와서 SQL 함수를 실행해야하지만 어떻게 계산할 수는 없습니다. 일반적으로 Pattern에는 "1"의 예에서 단일 문자가 들어 있습니다. 이스케이프 문자를 사용하고 내 함수를 실행하려면 패턴 변경 시도했지만 someting 누락 된 것 같아요 (모든 가능하다면). 다음과 같이 내가 설정에서 전송 한 변수는 다음과 같습니다
{0}' or Name like dbo.RunCalulation({0})
나에게주는 다음
'…@Pattern nvarchar(43)',@Pattern=N'1'' or Name like dbo.RunCalulation(1) '
이 실행 만 응답을 제공하지 않기 때문에, 나는 esacpe의 문자하지 않는 생각 작업을 수행하고 전체 문자열을 이름과 비교합니다.
내가 진짜이에 붙어있어 누군가가 내가 소스 코드를 가지고 있지 것은 진짜 문제는 여기에 것을 알고 (무엇을해야 하는지를 좋은 생각을 가지고 있기를 바랍니다. query parameters의 큰 장점
안녕하세요, 매우 빠른 답장을 보내 주셔서 감사합니다. 이것은 내가 두려워했던 것입니다. 누군가가 오래된 코드를 파고 들기를 바랍니다. – user3419063